endSession method

Future<void> endSession({
  1. Map<String, dynamic>? metadata,
})

Record a session-end event and flush remaining events.

Implementation

Future<void> endSession({Map<String, dynamic>? metadata}) async {
  if (!_sessionStarted) return;

  // Drain pending performance metrics into events.
  _flushPerformanceMetrics();

  track(
    TelemetryEvent(
      name: 'session_end',
      type: TelemetryEventType.sessionEnd,
      properties: {
        'totalTracked': _totalTracked,
        'totalFlushed': _totalFlushed,
        if (metadata != null) ...metadata,
      },
      sessionId: _sessionId,
    ),
  );
  _sessionStarted = false;
  await flush();
}