Skip to content

Commit 4890945

Browse files
committed
MOBILE-2915 core: Try to fix freezes when clicking push
1 parent 2f1171f commit 4890945

File tree

2 files changed

+21
-14
lines changed

2 files changed

+21
-14
lines changed

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)