forked from EVOgeek/Vmeda.Online
		
	
						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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user