eventsToSyncProvider top-level property
final
Implementation
final eventsToSyncProvider = FutureProvider.autoDispose((ref) async {
// fetch all from all spaces
final allEventList = await ref.watch(allEventListProvider(null).future);
final upcomingAndOngoing = allEventList.where((event) {
final eventType = ref.watch(eventTypeProvider(event));
return (eventType == EventFilters.upcoming ||
eventType == EventFilters.ongoing);
});
final List<EventAndRsvp> toSync = [];
for (final event in upcomingAndOngoing) {
if (!await ref.watch(shouldSyncRoomProvider(event.roomIdStr()).future)) {
// we skip this one
continue;
}
final eventId = event.eventId().toString();
final myRsvpStatus = await ref.watch(myRsvpStatusProvider(eventId).future);
if (myRsvpStatus != RsvpStatusTag.No) {
// we sync all that aren’t denied yet
final event = await ref.watch(
calendarEventProvider(eventId).future,
); // ensure we are listening to updates of the events themselves
toSync.add((event: event, rsvp: myRsvpStatus));
}
}
return toSync;
});