presentTransact method

  1. @override
Future<String> presentTransact({
  1. required AtomicConfig configuration,
  2. required TransactEnvironment environment,
  3. AtomicPresentationStyleIOS? presentationStyleIOS,
  4. bool debug = false,
  5. AtomicInteractionHandler? onInteraction,
  6. AtomicDataRequestHandler? onDataRequest,
  7. AtomicAuthStatusUpdateHandler? onAuthStatusUpdate,
  8. AtomicTaskStatusUpdateHandler? onTaskStatusUpdate,
  9. AtomicLaunchHandler? onLaunch,
  10. AtomicCompletionHandler? onCompletion,
  11. AtomicCleanupHandler? onCleanup,
})
override

Present the Atomic Transact SDK

  • config Configuration of the Transact SDK

Implementation

@override
Future<String> presentTransact({
  required AtomicConfig configuration,
  required TransactEnvironment environment,
  AtomicPresentationStyleIOS? presentationStyleIOS,
  bool debug = false,
  AtomicInteractionHandler? onInteraction,
  AtomicDataRequestHandler? onDataRequest,
  AtomicAuthStatusUpdateHandler? onAuthStatusUpdate,
  AtomicTaskStatusUpdateHandler? onTaskStatusUpdate,
  AtomicLaunchHandler? onLaunch,
  AtomicCompletionHandler? onCompletion,
  AtomicCleanupHandler? onCleanup,
}) async {
  final instanceId = _createInstanceId();

  // Registered before the native call, so an event sent while Transact is
  // being presented can't arrive before its handlers exist.
  _transacts[instanceId] = _TransactHandlers(
    onInteraction: onInteraction,
    onDataRequest: onDataRequest,
    onAuthStatusUpdate: onAuthStatusUpdate,
    onTaskStatusUpdate: onTaskStatusUpdate,
    onLaunch: onLaunch,
    onCompletion: onCompletion,
    onCleanup: onCleanup,
  );

  try {
    await _channel.invokeMethod(
      'presentTransact',
      {
        'instanceId': instanceId,
        'configuration': configuration.toJson(),
        'transactPath': environment.transactPath,
        'apiPath': environment.apiPath,
        'presentationStyleIOS': presentationStyleIOS?.name,
        'pluginVersion': packageVersion,
        'debug': debug,
      },
    );
  } catch (_) {
    // Nothing was presented, so no onCleanup will ever arrive for this id.
    _transacts.remove(instanceId);
    rethrow;
  }

  return instanceId;
}