recoverEvents method
Recover failed events and retry offline events
Implementation
Future<CFResult<EventRecoveryResult>> recoverEvents({
int maxEventsToRetry = 50,
}) async {
try {
Logger.i('📧 Starting event recovery process');
final eventTracker = _getEventTracker();
// Recover offline events first
final offlineRecoveryResult =
await EventRecoveryManager.recoverOfflineEvents(eventTracker);
final offlineRecovered = offlineRecoveryResult.getOrNull() ?? 0;
// Then retry failed events
final failedRetryResult = await EventRecoveryManager.retryFailedEvents(
eventTracker,
maxEventsToRetry: maxEventsToRetry,
);
final failedRetried = failedRetryResult.getOrNull() ?? 0;
// Clean up old failed events
final cleanupResult = await EventRecoveryManager.cleanupOldFailedEvents();
final cleanedUp = cleanupResult.getOrNull() ?? 0;
final result = EventRecoveryResult(
offlineEventsRecovered: offlineRecovered,
failedEventsRetried: failedRetried,
oldEventsCleanedUp: cleanedUp,
timestamp: DateTime.now(),
);
Logger.i('📧 Event recovery completed: $result');
return CFResult.success(result);
} catch (e) {
Logger.e('📧 Event recovery failed: $e');
return CFResult.error(
'Event recovery failed',
exception: e is Exception ? e : Exception(e.toString()),
category: ErrorCategory.analytics,
);
}
}