Skip to content

Commit 5602e6e

Browse files
authored
Merge pull request #1824 from dpalou/MOBILE-2915
Mobile 2915
2 parents a37bbc8 + 4890945 commit 5602e6e

File tree

5 files changed

+38
-26
lines changed

5 files changed

+38
-26
lines changed

src/addon/messages/pages/group-conversations/group-conversations.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
141141
conversation.unreadcount = 0;
142142

143143
// Conversations changed, invalidate them and refresh unread counts.
144-
this.messagesProvider.invalidateConversations();
145-
this.messagesProvider.refreshUnreadConversationCounts();
144+
this.messagesProvider.invalidateConversations(this.siteId);
145+
this.messagesProvider.refreshUnreadConversationCounts(this.siteId);
146146
}
147147
}
148148
}, this.siteId);
@@ -251,7 +251,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
251251
const promises = [];
252252

253253
promises.push(this.fetchConversationCounts());
254-
promises.push(this.messagesProvider.getContactRequestsCount()); // View updated by the event observer.
254+
promises.push(this.messagesProvider.getContactRequestsCount(this.siteId)); // View updated by the event observer.
255255

256256
return Promise.all(promises).then(() => {
257257
if (typeof this.favourites.expanded == 'undefined') {
@@ -323,7 +323,8 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
323323

324324
promises.push(this.fetchConversationCounts());
325325
if (refreshUnreadCounts) {
326-
promises.push(this.messagesProvider.refreshUnreadConversationCounts()); // View updated by the event observer.
326+
// View updated by event observer.
327+
promises.push(this.messagesProvider.refreshUnreadConversationCounts(this.siteId));
327328
}
328329

329330
return Promise.all(promises);
@@ -347,10 +348,10 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
347348
offlineMessages;
348349

349350
// Get the conversations and, if needed, the offline messages. Always try to get the latest data.
350-
promises.push(this.messagesProvider.invalidateConversations().catch(() => {
351+
promises.push(this.messagesProvider.invalidateConversations(this.siteId).catch(() => {
351352
// Shouldn't happen.
352353
}).then(() => {
353-
return this.messagesProvider.getConversations(option.type, option.favourites, limitFrom);
354+
return this.messagesProvider.getConversations(option.type, option.favourites, limitFrom, this.siteId);
354355
}).then((result) => {
355356
data = result;
356357
}));
@@ -362,7 +363,8 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
362363

363364
promises.push(this.fetchConversationCounts());
364365
if (refreshUnreadCounts) {
365-
promises.push(this.messagesProvider.refreshUnreadConversationCounts()); // View updated by the event observer.
366+
// View updated by the event observer.
367+
promises.push(this.messagesProvider.refreshUnreadConversationCounts(this.siteId));
366368
}
367369
}
368370

@@ -392,10 +394,10 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
392394
*/
393395
protected fetchConversationCounts(): Promise<void> {
394396
// Always try to get the latest data.
395-
return this.messagesProvider.invalidateConversationCounts().catch(() => {
397+
return this.messagesProvider.invalidateConversationCounts(this.siteId).catch(() => {
396398
// Shouldn't happen.
397399
}).then(() => {
398-
return this.messagesProvider.getConversationCounts();
400+
return this.messagesProvider.getConversationCounts(this.siteId);
399401
}).then((counts) => {
400402
this.favourites.count = counts.favourites;
401403
this.individual.count = counts.individual;
@@ -610,7 +612,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy {
610612
refreshData(refresher?: any, refreshUnreadCounts: boolean = true): Promise<any> {
611613
// Don't invalidate conversations and so, they always try to get latest data.
612614
const promises = [
613-
this.messagesProvider.invalidateContactRequestsCountCache()
615+
this.messagesProvider.invalidateContactRequestsCountCache(this.siteId)
614616
];
615617

616618
return this.utils.allPromises(promises).finally(() => {

src/addon/mod/lesson/pages/player/player.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ export class AddonModLessonPlayerPage implements OnInit, OnDestroy {
245245

246246
if (info.preventaccessreasons && info.preventaccessreasons.length) {
247247
// If it's a password protected lesson and we have the password, allow playing it.
248-
const preventReason = this.lessonProvider.getPreventAccessReason(info, !!this.password);
248+
const preventReason = this.lessonProvider.getPreventAccessReason(info, !!this.password, this.review);
249249
if (preventReason) {
250250
// Lesson cannot be played, show message and go back.
251251
return Promise.reject(preventReason.message);

src/addon/mod/lesson/providers/lesson.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2367,9 +2367,10 @@ export class AddonModLessonProvider {
23672367
*
23682368
* @param {any} info Lesson access info.
23692369
* @param {boolean} [ignorePassword] Whether password protected reason should be ignored (user already entered the password).
2370+
* @param {boolean} [isReview] Whether user is reviewing a retake.
23702371
* @return {any} Prevent access reason.
23712372
*/
2372-
getPreventAccessReason(info: any, ignorePassword?: boolean): any {
2373+
getPreventAccessReason(info: any, ignorePassword?: boolean, isReview?: boolean): any {
23732374
let result;
23742375

23752376
if (info && info.preventaccessreasons) {
@@ -2384,6 +2385,8 @@ export class AddonModLessonProvider {
23842385
// Treat password before all other reasons.
23852386
result = entry;
23862387
}
2388+
} else if (entry.reason == 'noretake' && isReview) {
2389+
// Ignore noretake error when reviewing.
23872390
} else if (!result) {
23882391
// Rest of cases, just return any of them.
23892392
result = entry;

src/core/contentlinks/providers/helper.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
import { Injectable } from '@angular/core';
15+
import { Injectable, NgZone } from '@angular/core';
1616
import { NavController } from 'ionic-angular';
1717
import { TranslateService } from '@ngx-translate/core';
1818
import { CoreAppProvider } from '@providers/app';
@@ -40,7 +40,7 @@ export class CoreContentLinksHelperProvider {
4040
private contentLinksDelegate: CoreContentLinksDelegate, private appProvider: CoreAppProvider,
4141
private domUtils: CoreDomUtilsProvider, private urlUtils: CoreUrlUtilsProvider, private translate: TranslateService,
4242
private initDelegate: CoreInitDelegate, eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider,
43-
private sitePluginsProvider: CoreSitePluginsProvider) {
43+
private sitePluginsProvider: CoreSitePluginsProvider, private zone: NgZone) {
4444
this.logger = logger.getInstance('CoreContentLinksHelperProvider');
4545

4646
// Listen for app launched URLs. If we receive one, check if it's a content link.
@@ -91,11 +91,15 @@ export class CoreContentLinksHelperProvider {
9191
*/
9292
goInSite(navCtrl: NavController, pageName: string, pageParams: any, siteId?: string): void {
9393
siteId = siteId || this.sitesProvider.getCurrentSiteId();
94-
if (navCtrl && siteId == this.sitesProvider.getCurrentSiteId()) {
95-
navCtrl.push(pageName, pageParams);
96-
} else {
97-
this.loginHelper.redirect(pageName, pageParams, siteId);
98-
}
94+
95+
// Execute the code in the Angular zone, so change detection doesn't stop working.
96+
this.zone.run(() => {
97+
if (navCtrl && siteId == this.sitesProvider.getCurrentSiteId()) {
98+
navCtrl.push(pageName, pageParams);
99+
} else {
100+
this.loginHelper.redirect(pageName, pageParams, siteId);
101+
}
102+
});
99103
}
100104

101105
/**

src/providers/local-notifications.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
import { Injectable } from '@angular/core';
15+
import { Injectable, NgZone } from '@angular/core';
1616
import { Platform, Alert, AlertController } from 'ionic-angular';
1717
import { LocalNotifications, ILocalNotification } from '@ionic-native/local-notifications';
1818
import { Push } from '@ionic-native/push';
@@ -105,7 +105,7 @@ export class CoreLocalNotificationsProvider {
105105
constructor(logger: CoreLoggerProvider, private localNotifications: LocalNotifications, private platform: Platform,
106106
private appProvider: CoreAppProvider, private utils: CoreUtilsProvider, private configProvider: CoreConfigProvider,
107107
private textUtils: CoreTextUtilsProvider, private translate: TranslateService, private alertCtrl: AlertController,
108-
eventsProvider: CoreEventsProvider, private push: Push) {
108+
eventsProvider: CoreEventsProvider, private push: Push, private zone: NgZone) {
109109

110110
this.logger = logger.getInstance('CoreLocalNotificationsProvider');
111111
this.appDB = appProvider.getDB();
@@ -327,12 +327,15 @@ export class CoreLocalNotificationsProvider {
327327
* @param {any} data Data received by the notification.
328328
*/
329329
notifyClick(data: any): void {
330-
const component = data.component;
331-
if (component) {
332-
if (this.observables[component]) {
333-
this.observables[component].next(data);
330+
// Execute the code in the Angular zone, so change detection doesn't stop working.
331+
this.zone.run(() => {
332+
const component = data.component;
333+
if (component) {
334+
if (this.observables[component]) {
335+
this.observables[component].next(data);
336+
}
334337
}
335-
}
338+
});
336339
}
337340

338341
/**

0 commit comments

Comments
 (0)