commit
72baa77fc0
|
@ -14,6 +14,7 @@
|
|||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { CoreEventsProvider } from '@providers/events';
|
||||
import { CoreTextUtils } from '@providers/utils/text';
|
||||
import { CoreUtilsProvider } from '@providers/utils/utils';
|
||||
import { CorePushNotificationsClickHandler } from '@core/pushnotifications/providers/delegate';
|
||||
import { CoreContentLinksHelperProvider } from '@core/contentlinks/providers/helper';
|
||||
|
@ -60,38 +61,46 @@ export class AddonNotificationsPushClickHandler implements CorePushNotifications
|
|||
* @param notification The notification to check.
|
||||
* @return Promise resolved when done.
|
||||
*/
|
||||
handleClick(notification: any): Promise<any> {
|
||||
let promise;
|
||||
async handleClick(notification: any): Promise<void> {
|
||||
|
||||
// Try to handle the appurl first.
|
||||
if (notification.customdata && notification.customdata.appurl) {
|
||||
promise = this.linkHelper.handleLink(notification.customdata.appurl, undefined, undefined, true);
|
||||
} else {
|
||||
promise = Promise.resolve(false);
|
||||
if (notification.customdata.extendedtext) {
|
||||
// Display the text in a modal.
|
||||
return CoreTextUtils.instance.viewText(notification.title, notification.customdata.extendedtext, {
|
||||
displayCopyButton: true,
|
||||
modalOptions: { cssClass: 'core-modal-fullscreen' },
|
||||
});
|
||||
}
|
||||
|
||||
return promise.then((treated) => {
|
||||
// Try to handle the appurl.
|
||||
if (notification.customdata && notification.customdata.appurl) {
|
||||
switch (notification.customdata.appurlopenin) {
|
||||
case 'inappbrowser':
|
||||
this.utils.openInApp(notification.customdata.appurl);
|
||||
|
||||
if (!treated) {
|
||||
// No link or cannot be handled by the app. Try to handle the contexturl now.
|
||||
if (notification.contexturl) {
|
||||
return this.linkHelper.handleLink(notification.contexturl);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'browser':
|
||||
return this.utils.openInBrowser(notification.customdata.appurl);
|
||||
|
||||
default:
|
||||
if (this.linkHelper.handleLink(notification.customdata.appurl, undefined, undefined, true)) {
|
||||
// Link treated, stop.
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}).then((treated) => {
|
||||
|
||||
if (!treated) {
|
||||
// No link or cannot be handled by the app. Open the notifications page.
|
||||
return this.notificationsProvider.invalidateNotificationsList(notification.site).catch(() => {
|
||||
// Ignore errors.
|
||||
}).then(() => {
|
||||
return this.linkHelper.goInSite(undefined, 'AddonNotificationsListPage', undefined, notification.site);
|
||||
});
|
||||
// No appurl or cannot be handled by the app. Try to handle the contexturl now.
|
||||
if (notification.contexturl) {
|
||||
if (this.linkHelper.handleLink(notification.contexturl)) {
|
||||
// Link treated, stop.
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// No contexturl or cannot be handled by the app. Open the notifications page.
|
||||
await this.utils.ignoreErrors(this.notificationsProvider.invalidateNotificationsList(notification.site));
|
||||
|
||||
await this.linkHelper.goInSite(undefined, 'AddonNotificationsListPage', undefined, notification.site);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -527,6 +527,12 @@ export class CorePushNotificationsProvider {
|
|||
localNotif.icon = notification.image;
|
||||
// This feature isn't supported by the official plugin, we use a fork.
|
||||
(<any> localNotif).iconType = data['image-type'];
|
||||
|
||||
localNotif.summary = data.summaryText;
|
||||
|
||||
if (data.picture) {
|
||||
localNotif.attachments = [data.picture];
|
||||
}
|
||||
}
|
||||
|
||||
Promise.all(promises).then(() => {
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
import { Injectable } from '@angular/core';
|
||||
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
|
||||
import { ModalController } from 'ionic-angular';
|
||||
import { ModalController, ModalOptions } from 'ionic-angular';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { CoreLangProvider } from '../lang';
|
||||
import { makeSingleton } from '@singletons/core.singletons';
|
||||
|
@ -1163,7 +1163,7 @@ export class CoreTextUtilsProvider {
|
|||
|
||||
Object.assign(params, options);
|
||||
|
||||
const modal = this.modalCtrl.create('CoreViewerTextPage', params);
|
||||
const modal = this.modalCtrl.create('CoreViewerTextPage', params, options.modalOptions);
|
||||
modal.present();
|
||||
}
|
||||
}
|
||||
|
@ -1181,6 +1181,7 @@ export type CoreTextUtilsViewTextOptions = {
|
|||
instanceId?: number; // The instance ID related to the context.
|
||||
courseId?: number; // Course ID the text belongs to. It can be used to improve performance with filters.
|
||||
displayCopyButton?: boolean; // Whether to display a button to copy the text.
|
||||
modalOptions?: ModalOptions; // Modal options.
|
||||
};
|
||||
|
||||
export class CoreTextUtils extends makeSingleton(CoreTextUtilsProvider) {}
|
||||
|
|
Loading…
Reference in New Issue