forked from EVOgeek/Vmeda.Online
		
	MOBILE-3021 calendar: Schedule event notifications
This commit is contained in:
		
							parent
							
								
									6d94c961f1
								
							
						
					
					
						commit
						31c92398b3
					
				| @ -14,6 +14,7 @@ | ||||
| 
 | ||||
| import { Component, OnDestroy, OnInit, Input, OnChanges, SimpleChange, Output, EventEmitter } from '@angular/core'; | ||||
| import { CoreEventsProvider } from '@providers/events'; | ||||
| import { CoreLocalNotificationsProvider } from '@providers/local-notifications'; | ||||
| import { CoreSitesProvider } from '@providers/sites'; | ||||
| import { CoreDomUtilsProvider } from '@providers/utils/dom'; | ||||
| import { CoreTimeUtilsProvider } from '@providers/utils/time'; | ||||
| @ -56,9 +57,11 @@ export class AddonCalendarCalendarComponent implements OnInit, OnChanges, OnDest | ||||
| 
 | ||||
|     // Observers.
 | ||||
|     protected undeleteEventObserver: any; | ||||
|     protected obsDefaultTimeChange: any; | ||||
| 
 | ||||
|     constructor(eventsProvider: CoreEventsProvider, | ||||
|             sitesProvider: CoreSitesProvider, | ||||
|             localNotificationsProvider: CoreLocalNotificationsProvider, | ||||
|             private calendarProvider: AddonCalendarProvider, | ||||
|             private calendarHelper: AddonCalendarHelperProvider, | ||||
|             private calendarOffline: AddonCalendarOfflineProvider, | ||||
| @ -69,6 +72,17 @@ export class AddonCalendarCalendarComponent implements OnInit, OnChanges, OnDest | ||||
| 
 | ||||
|         this.currentSiteId = sitesProvider.getCurrentSiteId(); | ||||
| 
 | ||||
|         if (localNotificationsProvider.isAvailable()) { | ||||
|             // Re-schedule events if default time changes.
 | ||||
|             this.obsDefaultTimeChange = eventsProvider.on(AddonCalendarProvider.DEFAULT_NOTIFICATION_TIME_CHANGED, () => { | ||||
|                 this.weeks.forEach((week) => { | ||||
|                     week.days.forEach((day) => { | ||||
|                         calendarProvider.scheduleEventsNotifications(day.events); | ||||
|                     }); | ||||
|                 }); | ||||
|             }, this.currentSiteId); | ||||
|         } | ||||
| 
 | ||||
|         // Listen for events "undeleted" (offline).
 | ||||
|         this.undeleteEventObserver = eventsProvider.on(AddonCalendarProvider.UNDELETED_EVENT_EVENT, (data) => { | ||||
|             if (data && data.eventId) { | ||||
| @ -334,6 +348,9 @@ export class AddonCalendarCalendarComponent implements OnInit, OnChanges, OnDest | ||||
|                 // Format online events.
 | ||||
|                 day.events.forEach(this.calendarHelper.formatEventData.bind(this.calendarHelper)); | ||||
| 
 | ||||
|                 // Schedule notifications for the events retrieved (only future events will be scheduled).
 | ||||
|                 this.calendarProvider.scheduleEventsNotifications(day.events); | ||||
| 
 | ||||
|                 if (monthOfflineEvents || this.deletedEvents.length) { | ||||
|                     // There is offline data, merge it.
 | ||||
| 
 | ||||
| @ -403,5 +420,6 @@ export class AddonCalendarCalendarComponent implements OnInit, OnChanges, OnDest | ||||
|      */ | ||||
|     ngOnDestroy(): void { | ||||
|         this.undeleteEventObserver && this.undeleteEventObserver.off(); | ||||
|         this.obsDefaultTimeChange && this.obsDefaultTimeChange.off(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -14,6 +14,7 @@ | ||||
| 
 | ||||
| import { Component, OnDestroy, OnInit, Input, OnChanges, SimpleChange, Output, EventEmitter } from '@angular/core'; | ||||
| import { CoreEventsProvider } from '@providers/events'; | ||||
| import { CoreLocalNotificationsProvider } from '@providers/local-notifications'; | ||||
| import { CoreSitesProvider } from '@providers/sites'; | ||||
| import { CoreDomUtilsProvider } from '@providers/utils/dom'; | ||||
| import { AddonCalendarProvider } from '../../providers/calendar'; | ||||
| @ -51,9 +52,11 @@ export class AddonCalendarUpcomingEventsComponent implements OnInit, OnChanges, | ||||
| 
 | ||||
|     // Observers.
 | ||||
|     protected undeleteEventObserver: any; | ||||
|     protected obsDefaultTimeChange: any; | ||||
| 
 | ||||
|     constructor(eventsProvider: CoreEventsProvider, | ||||
|             sitesProvider: CoreSitesProvider, | ||||
|             localNotificationsProvider: CoreLocalNotificationsProvider, | ||||
|             private calendarProvider: AddonCalendarProvider, | ||||
|             private calendarHelper: AddonCalendarHelperProvider, | ||||
|             private calendarOffline: AddonCalendarOfflineProvider, | ||||
| @ -62,6 +65,13 @@ export class AddonCalendarUpcomingEventsComponent implements OnInit, OnChanges, | ||||
| 
 | ||||
|         this.currentSiteId = sitesProvider.getCurrentSiteId(); | ||||
| 
 | ||||
|         if (localNotificationsProvider.isAvailable()) { | ||||
|             // Re-schedule events if default time changes.
 | ||||
|             this.obsDefaultTimeChange = eventsProvider.on(AddonCalendarProvider.DEFAULT_NOTIFICATION_TIME_CHANGED, () => { | ||||
|                 calendarProvider.scheduleEventsNotifications(this.onlineEvents); | ||||
|             }, this.currentSiteId); | ||||
|         } | ||||
| 
 | ||||
|         // Listen for events "undeleted" (offline).
 | ||||
|         this.undeleteEventObserver = eventsProvider.on(AddonCalendarProvider.UNDELETED_EVENT_EVENT, (data) => { | ||||
|             if (data && data.eventId) { | ||||
| @ -152,6 +162,9 @@ export class AddonCalendarUpcomingEventsComponent implements OnInit, OnChanges, | ||||
| 
 | ||||
|             this.onlineEvents.forEach(this.calendarHelper.formatEventData.bind(this.calendarHelper)); | ||||
| 
 | ||||
|             // Schedule notifications for the events retrieved.
 | ||||
|             this.calendarProvider.scheduleEventsNotifications(this.onlineEvents); | ||||
| 
 | ||||
|             // Merge the online events with offline data.
 | ||||
|             this.events = this.mergeEvents(); | ||||
| 
 | ||||
| @ -319,5 +332,6 @@ export class AddonCalendarUpcomingEventsComponent implements OnInit, OnChanges, | ||||
|      */ | ||||
|     ngOnDestroy(): void { | ||||
|         this.undeleteEventObserver && this.undeleteEventObserver.off(); | ||||
|         this.obsDefaultTimeChange && this.obsDefaultTimeChange.off(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -61,6 +61,7 @@ export class AddonCalendarDayPage implements OnInit, OnDestroy { | ||||
|     protected syncObserver: any; | ||||
|     protected manualSyncObserver: any; | ||||
|     protected onlineObserver: any; | ||||
|     protected obsDefaultTimeChange: any; | ||||
| 
 | ||||
|     periodName: string; | ||||
|     filteredEvents = []; | ||||
| @ -98,6 +99,13 @@ export class AddonCalendarDayPage implements OnInit, OnDestroy { | ||||
|         this.courseId = navParams.get('courseId'); | ||||
|         this.currentSiteId = sitesProvider.getCurrentSiteId(); | ||||
| 
 | ||||
|         if (localNotificationsProvider.isAvailable()) { | ||||
|             // Re-schedule events if default time changes.
 | ||||
|             this.obsDefaultTimeChange = eventsProvider.on(AddonCalendarProvider.DEFAULT_NOTIFICATION_TIME_CHANGED, () => { | ||||
|                 calendarProvider.scheduleEventsNotifications(this.onlineEvents); | ||||
|             }, this.currentSiteId); | ||||
|         } | ||||
| 
 | ||||
|         // Listen for events added. When an event is added, reload the data.
 | ||||
|         this.newEventObserver = eventsProvider.on(AddonCalendarProvider.NEW_EVENT_EVENT, (data) => { | ||||
|             if (data && data.event) { | ||||
| @ -282,6 +290,9 @@ export class AddonCalendarDayPage implements OnInit, OnDestroy { | ||||
|             this.onlineEvents = result.events; | ||||
|             this.onlineEvents.forEach(this.calendarHelper.formatEventData.bind(this.calendarHelper)); | ||||
| 
 | ||||
|             // Schedule notifications for the events retrieved (only future events will be scheduled).
 | ||||
|             this.calendarProvider.scheduleEventsNotifications(this.onlineEvents); | ||||
| 
 | ||||
|             // Merge the online events with offline data.
 | ||||
|             this.events = this.mergeEvents(); | ||||
| 
 | ||||
| @ -609,5 +620,6 @@ export class AddonCalendarDayPage implements OnInit, OnDestroy { | ||||
|         this.syncObserver && this.syncObserver.off(); | ||||
|         this.manualSyncObserver && this.manualSyncObserver.off(); | ||||
|         this.onlineObserver && this.onlineObserver.unsubscribe(); | ||||
|         this.obsDefaultTimeChange && this.obsDefaultTimeChange.off(); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user