MOBILE-2915 core: Try to fix freezes when clicking push
parent
2f1171fec8
commit
489094598a
|
@ -12,7 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Injectable, NgZone } from '@angular/core';
|
||||
import { NavController } from 'ionic-angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { CoreAppProvider } from '@providers/app';
|
||||
|
@ -40,7 +40,7 @@ export class CoreContentLinksHelperProvider {
|
|||
private contentLinksDelegate: CoreContentLinksDelegate, private appProvider: CoreAppProvider,
|
||||
private domUtils: CoreDomUtilsProvider, private urlUtils: CoreUrlUtilsProvider, private translate: TranslateService,
|
||||
private initDelegate: CoreInitDelegate, eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider,
|
||||
private sitePluginsProvider: CoreSitePluginsProvider) {
|
||||
private sitePluginsProvider: CoreSitePluginsProvider, private zone: NgZone) {
|
||||
this.logger = logger.getInstance('CoreContentLinksHelperProvider');
|
||||
|
||||
// Listen for app launched URLs. If we receive one, check if it's a content link.
|
||||
|
@ -91,11 +91,15 @@ export class CoreContentLinksHelperProvider {
|
|||
*/
|
||||
goInSite(navCtrl: NavController, pageName: string, pageParams: any, siteId?: string): void {
|
||||
siteId = siteId || this.sitesProvider.getCurrentSiteId();
|
||||
if (navCtrl && siteId == this.sitesProvider.getCurrentSiteId()) {
|
||||
navCtrl.push(pageName, pageParams);
|
||||
} else {
|
||||
this.loginHelper.redirect(pageName, pageParams, siteId);
|
||||
}
|
||||
|
||||
// Execute the code in the Angular zone, so change detection doesn't stop working.
|
||||
this.zone.run(() => {
|
||||
if (navCtrl && siteId == this.sitesProvider.getCurrentSiteId()) {
|
||||
navCtrl.push(pageName, pageParams);
|
||||
} else {
|
||||
this.loginHelper.redirect(pageName, pageParams, siteId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Injectable, NgZone } from '@angular/core';
|
||||
import { Platform, Alert, AlertController } from 'ionic-angular';
|
||||
import { LocalNotifications, ILocalNotification } from '@ionic-native/local-notifications';
|
||||
import { Push } from '@ionic-native/push';
|
||||
|
@ -105,7 +105,7 @@ export class CoreLocalNotificationsProvider {
|
|||
constructor(logger: CoreLoggerProvider, private localNotifications: LocalNotifications, private platform: Platform,
|
||||
private appProvider: CoreAppProvider, private utils: CoreUtilsProvider, private configProvider: CoreConfigProvider,
|
||||
private textUtils: CoreTextUtilsProvider, private translate: TranslateService, private alertCtrl: AlertController,
|
||||
eventsProvider: CoreEventsProvider, private push: Push) {
|
||||
eventsProvider: CoreEventsProvider, private push: Push, private zone: NgZone) {
|
||||
|
||||
this.logger = logger.getInstance('CoreLocalNotificationsProvider');
|
||||
this.appDB = appProvider.getDB();
|
||||
|
@ -327,12 +327,15 @@ export class CoreLocalNotificationsProvider {
|
|||
* @param {any} data Data received by the notification.
|
||||
*/
|
||||
notifyClick(data: any): void {
|
||||
const component = data.component;
|
||||
if (component) {
|
||||
if (this.observables[component]) {
|
||||
this.observables[component].next(data);
|
||||
// Execute the code in the Angular zone, so change detection doesn't stop working.
|
||||
this.zone.run(() => {
|
||||
const component = data.component;
|
||||
if (component) {
|
||||
if (this.observables[component]) {
|
||||
this.observables[component].next(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue