reserveEventMetadata method

  1. @override
EventReservation reserveEventMetadata()
override

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.verbose(
    'Event metadata reserved: sequence=$sequence, timestamp=${timestamp.millisecondsSinceEpoch}',
  );

  return EventReservation(
    sequence: sequence,
    timestamp: timestamp,
    routeName: routeName,
    previousRouteName: previousRouteName,
  );
}