presentUpsell method

  1. @override
Future<String?> presentUpsell({
  1. required BuildContext context,
  2. required String trigger,
  3. PaywallEventHandlers? eventHandlers,
  4. Map<String, dynamic>? customPaywallTraits,
})
override

Presents view based on trigger

Implementation

@override
Future<String?> presentUpsell({
  required BuildContext context,
  required String trigger,
  PaywallEventHandlers? eventHandlers,
  Map<String, dynamic>? customPaywallTraits,
}) async {
  _fallbackContext = context;

  // Store current event handlers
  _currentEventHandlers = eventHandlers;

  try {
    final result = await methodChannel.invokeMethod<String?>(
      presentUpsellMethodName,
      {
        'trigger': trigger,
        'customPaywallTraits': _convertBooleansToMarkers(customPaywallTraits),
      },
    );
    return result;
  } on PlatformException catch (e) {
    log('[Helium] Unexpected present upsell error: ${e.message}');
    _currentEventHandlers = null;
    await methodChannel.invokeMethod<String?>(
      fallbackOpenEventMethodName,
      {
        'trigger': trigger,
        'viewType': 'presented',
        'paywallUnavailableReason': 'bridgingError',
      },
    );
    _showFallbackSheet(trigger);
    return "Failed to present upsell: '${e.message}'.";
  }
}