Merge pull request #1993 from dpalou/MOBILE-3067
MOBILE-3067 notifications: Fix mark read when it shouldn'tmain
commit
38ae11b8fd
|
@ -41,8 +41,10 @@ export class AddonNotificationsListPage {
|
||||||
canMarkAllNotificationsAsRead = false;
|
canMarkAllNotificationsAsRead = false;
|
||||||
loadingMarkAllNotificationsAsRead = false;
|
loadingMarkAllNotificationsAsRead = false;
|
||||||
|
|
||||||
|
protected isCurrentView: boolean;
|
||||||
protected cronObserver: CoreEventObserver;
|
protected cronObserver: CoreEventObserver;
|
||||||
protected pushObserver: Subscription;
|
protected pushObserver: Subscription;
|
||||||
|
protected pendingRefresh = false;
|
||||||
|
|
||||||
constructor(navParams: NavParams, private domUtils: CoreDomUtilsProvider, private eventsProvider: CoreEventsProvider,
|
constructor(navParams: NavParams, private domUtils: CoreDomUtilsProvider, private eventsProvider: CoreEventsProvider,
|
||||||
private sitesProvider: CoreSitesProvider, private textUtils: CoreTextUtilsProvider,
|
private sitesProvider: CoreSitesProvider, private textUtils: CoreTextUtilsProvider,
|
||||||
|
@ -55,17 +57,24 @@ export class AddonNotificationsListPage {
|
||||||
* View loaded.
|
* View loaded.
|
||||||
*/
|
*/
|
||||||
ionViewDidLoad(): void {
|
ionViewDidLoad(): void {
|
||||||
this.fetchNotifications().finally(() => {
|
this.fetchNotifications();
|
||||||
this.notificationsLoaded = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
this.cronObserver = this.eventsProvider.on(AddonNotificationsProvider.READ_CRON_EVENT, () => this.refreshNotifications(),
|
this.cronObserver = this.eventsProvider.on(AddonNotificationsProvider.READ_CRON_EVENT, () => {
|
||||||
this.sitesProvider.getCurrentSiteId());
|
if (this.isCurrentView) {
|
||||||
|
this.notificationsLoaded = false;
|
||||||
|
this.refreshNotifications();
|
||||||
|
}
|
||||||
|
}, this.sitesProvider.getCurrentSiteId());
|
||||||
|
|
||||||
this.pushObserver = this.pushNotificationsDelegate.on('receive').subscribe((notification) => {
|
this.pushObserver = this.pushNotificationsDelegate.on('receive').subscribe((notification) => {
|
||||||
// New notification received. If it's from current site, refresh the data.
|
// New notification received. If it's from current site, refresh the data.
|
||||||
if (this.utils.isTrueOrOne(notification.notif) && this.sitesProvider.isCurrentSite(notification.site)) {
|
if (this.isCurrentView && this.utils.isTrueOrOne(notification.notif) &&
|
||||||
|
this.sitesProvider.isCurrentSite(notification.site)) {
|
||||||
|
|
||||||
|
this.notificationsLoaded = false;
|
||||||
this.refreshNotifications();
|
this.refreshNotifications();
|
||||||
|
} else if (!this.isCurrentView) {
|
||||||
|
this.pendingRefresh = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -93,6 +102,8 @@ export class AddonNotificationsListPage {
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error, 'addon.notifications.errorgetnotifications', true);
|
this.domUtils.showErrorModalDefault(error, 'addon.notifications.errorgetnotifications', true);
|
||||||
this.loadMoreError = true; // Set to prevent infinite calls with infinite-loading.
|
this.loadMoreError = true; // Set to prevent infinite calls with infinite-loading.
|
||||||
|
}).finally(() => {
|
||||||
|
this.notificationsLoaded = true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,9 +121,7 @@ export class AddonNotificationsListPage {
|
||||||
// All marked as read, refresh the list.
|
// All marked as read, refresh the list.
|
||||||
this.notificationsLoaded = false;
|
this.notificationsLoaded = false;
|
||||||
|
|
||||||
return this.refreshNotifications().finally(() => {
|
return this.refreshNotifications();
|
||||||
this.notificationsLoaded = true;
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,6 +207,27 @@ export class AddonNotificationsListPage {
|
||||||
notification.mobiletext = this.textUtils.replaceNewLines(text, '<br>');
|
notification.mobiletext = this.textUtils.replaceNewLines(text, '<br>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User entered the page.
|
||||||
|
*/
|
||||||
|
ionViewDidEnter(): void {
|
||||||
|
this.isCurrentView = true;
|
||||||
|
|
||||||
|
if (this.pendingRefresh) {
|
||||||
|
this.pendingRefresh = false;
|
||||||
|
this.notificationsLoaded = false;
|
||||||
|
|
||||||
|
this.refreshNotifications();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User left the page.
|
||||||
|
*/
|
||||||
|
ionViewDidLeave(): void {
|
||||||
|
this.isCurrentView = false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Page destroyed.
|
* Page destroyed.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue