replayPendingNonDurableSessionStarts static method
Rebuild non-delivered session_start events after local storage loss.
Implementation
static Future<void> replayPendingNonDurableSessionStarts(
Future<void> Function(Event event) persistEvent,
) async {
final replayedTimestamps = <int>{};
for (final pending in _getPendingSessionStarts()) {
if (pending.durable || !replayedTimestamps.add(pending.ts)) {
continue;
}
try {
final sessionStartEvent = await Event.createWithContext(
'session_start',
pending.ts,
sessionStartOverride: pending.ts,
sessionNumberOverride: pending.number,
);
await persistEvent(sessionStartEvent);
await _confirmPendingSessionStartStored(pending.ts);
} catch (e, st) {
dbLogger.severe(
'SessionHelper: replayPendingNonDurableSessionStarts failed',
e,
st,
);
}
}
}