setConsumableDeliveryHandler method

  1. @override
Future<InappifySdkResult<void>> setConsumableDeliveryHandler(
  1. InappifyConsumableDeliveryHandler? handler
)
override

Implementation

@override
Future<InappifySdkResult<void>> setConsumableDeliveryHandler(
  InappifyConsumableDeliveryHandler? handler,
) async {
  final previous = _deliveryHandler;
  _deliveryHandler = handler;
  NativeCallbacks.install(methodChannel);
  NativeCallbacks.delivery = (call) async {
    final selected = _deliveryHandler;
    if (selected == null) return InappifyDeliveryResult.retryLater.name;
    try {
      final data = Map<String, dynamic>.from(call.arguments as Map);
      return (await selected(InappifyConsumableDelivery.fromMap(data))).name;
    } catch (_) {
      return InappifyDeliveryResult.retryLater.name;
    }
  };
  final result = await _invokeResult<void>(
    method: InappifyChannelContract.setConsumableDeliveryHandler,
    payload: {'enabled': handler != null},
  );
  if (!result.isSuccess) _deliveryHandler = previous;
  return result;
}