log method

  1. @override
Future<void> log(
  1. Map<String, dynamic> config
)
override

Handles an Ensemble logging configuration payload.

Implementation

@override
Future<void> log(Map<String, dynamic> config) async {
  final operation = config['operation'] ?? 'logEvent';
  final provider = config['provider'] ?? 'firebase';

  if (provider != 'firebase') {
    print('FirebaseAnalyticsProvider: Unsupported provider: $provider');
    return; // Not a Firebase operation
  }

  try {
    switch (operation) {
      // Core event logging
      case 'logEvent':
        await _handleLogEvent(config);
        break;

      // Screen tracking
      case 'logScreenView':
        print('Firebase: Logging screen view: ${config['screenName']}');
        await _handleLogScreenView(config);
        break;

      // User lifecycle
      case 'logLogin':
        await _handleLogLogin(config);
        break;
      case 'logSignUp':
        await _handleLogSignUp(config);
        break;
      case 'logAppOpen':
        await _handleLogAppOpen(config);
        break;

      // Content and interaction
      case 'logSelectContent':
        await _handleLogSelectContent(config);
        break;
      case 'logShare':
        await _handleLogShare(config);
        break;
      case 'logSearch':
        await _handleLogSearch(config);
        break;
      case 'logViewSearchResults':
        await _handleLogViewSearchResults(config);
        break;

      // Gaming and achievements
      case 'logLevelUp':
        await _handleLogLevelUp(config);
        break;
      case 'logLevelStart':
        await _handleLogLevelStart(config);
        break;
      case 'logLevelEnd':
        await _handleLogLevelEnd(config);
        break;
      case 'logPostScore':
        await _handleLogPostScore(config);
        break;
      case 'logUnlockAchievement':
        await _handleLogUnlockAchievement(config);
        break;
      case 'logEarnVirtualCurrency':
        await _handleLogEarnVirtualCurrency(config);
        break;
      case 'logSpendVirtualCurrency':
        await _handleLogSpendVirtualCurrency(config);
        break;

      // Tutorial and onboarding
      case 'logTutorialBegin':
        await _handleLogTutorialBegin(config);
        break;
      case 'logTutorialComplete':
        await _handleLogTutorialComplete(config);
        break;

      // Social features
      case 'logJoinGroup':
        await _handleLogJoinGroup(config);
        break;

      // Marketing and attribution
      case 'logGenerateLead':
        await _handleLogGenerateLead(config);
        break;
      case 'logCampaignDetails':
        await _handleLogCampaignDetails(config);
        break;
      case 'logAdImpression':
        await _handleLogAdImpression(config);
        break;

      // E-COMMERCE FUNCTIONS
      case 'logAddPaymentInfo':
        await _handleLogAddPaymentInfo(config);
        break;
      case 'logAddShippingInfo':
        await _handleLogAddShippingInfo(config);
        break;
      case 'logAddToCart':
        await _handleLogAddToCart(config);
        break;
      case 'logAddToWishlist':
        await _handleLogAddToWishlist(config);
        break;
      case 'logBeginCheckout':
        await _handleLogBeginCheckout(config);
        break;
      case 'logPurchase':
        await _handleLogPurchase(config);
        break;
      case 'logRemoveFromCart':
        await _handleLogRemoveFromCart(config);
        break;
      case 'logViewCart':
        await _handleLogViewCart(config);
        break;
      case 'logViewItem':
        await _handleLogViewItem(config);
        break;
      case 'logViewItemList':
        await _handleLogViewItemList(config);
        break;
      case 'logSelectItem':
        await _handleLogSelectItem(config);
        break;
      case 'logSelectPromotion':
        await _handleLogSelectPromotion(config);
        break;
      case 'logViewPromotion':
        await _handleLogViewPromotion(config);
        break;
      case 'logRefund':
        await _handleLogRefund(config);
        break;

      // Configuration methods
      case 'setUserId':
        await _handleSetUserId(config);
        break;
      case 'setUserProperty':
        await _handleSetUserProperty(config);
        break;
      case 'setAnalyticsCollectionEnabled':
        await _handleSetAnalyticsCollectionEnabled(config);
        break;
      case 'setConsent':
        await _handleSetConsent(config);
        break;
      case 'setDefaultEventParameters':
        await _handleSetDefaultEventParameters(config);
        break;
      case 'setSessionTimeoutDuration':
        await _handleSetSessionTimeoutDuration(config);
        break;
      case 'resetAnalyticsData':
        await _handleResetAnalyticsData(config);
        break;

      // iOS-specific conversion methods
      case 'initiateOnDeviceConversionMeasurementWithEmailAddress':
        await _handleInitiateOnDeviceConversionMeasurementWithEmailAddress(
            config);
        break;
      case 'initiateOnDeviceConversionMeasurementWithPhoneNumber':
        await _handleInitiateOnDeviceConversionMeasurementWithPhoneNumber(
            config);
        break;
      case 'initiateOnDeviceConversionMeasurementWithHashedEmailAddress':
        await _handleInitiateOnDeviceConversionMeasurementWithHashedEmailAddress(
            config);
        break;
      case 'initiateOnDeviceConversionMeasurementWithHashedPhoneNumber':
        await _handleInitiateOnDeviceConversionMeasurementWithHashedPhoneNumber(
            config);
        break;

      default:
        throw ConfigError(
            'Unsupported Firebase Analytics operation: $operation');
    }
  } catch (e) {
    print('Firebase Analytics Error: $e');
    rethrow;
  }
}