prune method
Removes event entries from the store, whose respective device calendar
event is not present anymore. startOverride
and endOverride
define
the scan range for the native calendar. Events which are outside of the
scan range will be pruned. The default time range is 1900-2100 utc.
Implementation
Future<void> prune([TZDateTime? startOverride, TZDateTime? endOverride]) async {
var start = startOverride ?? TZDateTime.utc(1900);
var end = endOverride ?? TZDateTime.utc(2100);
var events = await store.getStoredEvents();
var existingEvents = (await parent.pluginRetrieveEvents(calendar.id, RetrieveEventsParams(startDate: start, endDate: end))) ?? [];
for (var e in events.entries.toList()) {
if (!existingEvents.any((element) => element.eventId == e.value)) events.removeWhere((key, value) => key == e.key);
}
await store.storeEvents(events);
}