getAndClearEvents method
Implementation
Future<String?> getAndClearEvents() async {
return await _lock.synchronized(() async {
try {
final String? existing = Prefs.getString(_eventsKey);
if (existing == null || existing.isEmpty) {
return null;
}
List<String> lines = existing.split(EventSizeUtil.DELIMITER);
int extractCount = EventSizeUtil.getMaxEventsUnderSizeLimit(lines);
if (extractCount <= 0) return null;
List<String> batch = lines.sublist(0, extractCount);
List<String> remaining = lines.sublist(extractCount);
if (remaining.isEmpty) {
await Prefs.remove(_eventsKey);
} else {
await Prefs.setString(
_eventsKey, remaining.join(EventSizeUtil.DELIMITER));
}
return batch.join(EventSizeUtil.DELIMITER);
} catch (e, st) {
dbLogger.severe('EventStorageHandler: getAndClearEvents Exception', e, st);
return null;
}
});
}