reserveEventMetadata method
Reserve sequence and timestamp immediately at event occurrence
Implementation
@override
EventReservation reserveEventMetadata() {
// Reserve sequence and timestamp immediately at event occurrence
// This ensures chronological order regardless of async processing delays
final sequence = _idManager.getNextSequence();
final timestamp = DateTime.now();
// Snapshot navigation state at reservation time (race-free)
String? routeName;
String? previousRouteName;
try {
if (NavigationIntegrationV2.isNavigationAvailable) {
routeName = NavigationIntegrationV2.getCurrentViewName();
previousRouteName = NavigationIntegrationV2.getPreviousViewName();
}
} catch (_) {}
ObslyLogger.debug(
'Event metadata reserved: sequence=$sequence, timestamp=${timestamp.millisecondsSinceEpoch}',
);
return EventReservation(
sequence: sequence,
timestamp: timestamp,
routeName: routeName,
previousRouteName: previousRouteName,
);
}