prune method

Future<void> prune([
  1. TZDateTime? startOverride,
  2. TZDateTime? endOverride
])

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);
}