MOBILE-4317 calendar: Schedule new site reminders

main
Dani Palou 2023-04-20 13:49:51 +02:00
parent 3d0a9441f4
commit d1f28f43ab
1 changed files with 27 additions and 14 deletions

View File

@ -49,6 +49,7 @@ import {
CoreReminderValueAndUnit, CoreReminderValueAndUnit,
} from '@features/reminders/services/reminders'; } from '@features/reminders/services/reminders';
import { CoreReminderDBRecord } from '@features/reminders/services/database/reminders'; import { CoreReminderDBRecord } from '@features/reminders/services/database/reminders';
import { CoreEvents } from '@singletons/events';
const ROOT_CACHE_KEY = 'mmaCalendar:'; const ROOT_CACHE_KEY = 'mmaCalendar:';
@ -297,6 +298,14 @@ export class AddonCalendarProvider {
this.notificationClicked(notification); this.notificationClicked(notification);
}, },
); );
CoreEvents.on(CoreEvents.SITE_ADDED, (data) => {
if (!data.siteId) {
return;
}
this.updateSiteEventReminders(data.siteId);
});
} }
/** /**
@ -1381,27 +1390,31 @@ export class AddonCalendarProvider {
} }
/** /**
* Get the next events for all the sites and schedules their notifications. * Get the next events for all the sites and updates their reminders.
* If an event notification time is 0, cancel its scheduled notification (if any).
* If local notification plugin is not enabled, resolve the promise.
*
* @returns Promise resolved when all the notifications have been scheduled.
*/ */
async updateAllSitesEventReminders(): Promise<void> { async updateAllSitesEventReminders(): Promise<void> {
await CorePlatform.ready(); await CorePlatform.ready();
const siteIds = await CoreSites.getSitesIds(); const siteIds = await CoreSites.getSitesIds();
await Promise.all(siteIds.map(async (siteId) => { await Promise.all(siteIds.map(siteId => this.updateSiteEventReminders(siteId)));
}
// Check if calendar is disabled for the site. /**
const disabled = await this.isDisabled(siteId); * Get the next events for a site and updates their reminders.
if (!disabled) { *
// Get first events. * @param siteId Site ID.
const events = await this.getEventsList(undefined, undefined, undefined, siteId); */
await this.updateEventsReminders(events, siteId); async updateSiteEventReminders(siteId: string): Promise<void> {
} // Check if calendar is disabled for the site.
})); const disabled = await this.isDisabled(siteId);
if (disabled) {
return;
}
// Get first events.
const events = await this.getEventsList(undefined, undefined, undefined, siteId);
await this.updateEventsReminders(events, siteId);
} }
/** /**