log method
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;
}
}