MOBILE-2921 assign: Support assign push clicks
This commit is contained in:
		
							parent
							
								
									881b7675cf
								
							
						
					
					
						commit
						6536ffecad
					
				| @ -17,6 +17,7 @@ import { CoreCronDelegate } from '@providers/cron'; | |||||||
| import { CoreContentLinksDelegate } from '@core/contentlinks/providers/delegate'; | import { CoreContentLinksDelegate } from '@core/contentlinks/providers/delegate'; | ||||||
| import { CoreCourseModuleDelegate } from '@core/course/providers/module-delegate'; | import { CoreCourseModuleDelegate } from '@core/course/providers/module-delegate'; | ||||||
| import { CoreCourseModulePrefetchDelegate } from '@core/course/providers/module-prefetch-delegate'; | import { CoreCourseModulePrefetchDelegate } from '@core/course/providers/module-prefetch-delegate'; | ||||||
|  | import { CorePushNotificationsDelegate } from '@core/pushnotifications/providers/delegate'; | ||||||
| import { AddonModAssignProvider } from './providers/assign'; | import { AddonModAssignProvider } from './providers/assign'; | ||||||
| import { AddonModAssignOfflineProvider } from './providers/assign-offline'; | import { AddonModAssignOfflineProvider } from './providers/assign-offline'; | ||||||
| import { AddonModAssignSyncProvider } from './providers/assign-sync'; | import { AddonModAssignSyncProvider } from './providers/assign-sync'; | ||||||
| @ -30,6 +31,7 @@ import { AddonModAssignPrefetchHandler } from './providers/prefetch-handler'; | |||||||
| import { AddonModAssignSyncCronHandler } from './providers/sync-cron-handler'; | import { AddonModAssignSyncCronHandler } from './providers/sync-cron-handler'; | ||||||
| import { AddonModAssignIndexLinkHandler } from './providers/index-link-handler'; | import { AddonModAssignIndexLinkHandler } from './providers/index-link-handler'; | ||||||
| import { AddonModAssignListLinkHandler } from './providers/list-link-handler'; | import { AddonModAssignListLinkHandler } from './providers/list-link-handler'; | ||||||
|  | import { AddonModAssignPushClickHandler } from './providers/push-click-handler'; | ||||||
| import { AddonModAssignSubmissionModule } from './submission/submission.module'; | import { AddonModAssignSubmissionModule } from './submission/submission.module'; | ||||||
| import { AddonModAssignFeedbackModule } from './feedback/feedback.module'; | import { AddonModAssignFeedbackModule } from './feedback/feedback.module'; | ||||||
| import { CoreUpdateManagerProvider } from '@providers/update-manager'; | import { CoreUpdateManagerProvider } from '@providers/update-manager'; | ||||||
| @ -64,7 +66,8 @@ export const ADDON_MOD_ASSIGN_PROVIDERS: any[] = [ | |||||||
|         AddonModAssignPrefetchHandler, |         AddonModAssignPrefetchHandler, | ||||||
|         AddonModAssignSyncCronHandler, |         AddonModAssignSyncCronHandler, | ||||||
|         AddonModAssignIndexLinkHandler, |         AddonModAssignIndexLinkHandler, | ||||||
|         AddonModAssignListLinkHandler |         AddonModAssignListLinkHandler, | ||||||
|  |         AddonModAssignPushClickHandler | ||||||
|     ] |     ] | ||||||
| }) | }) | ||||||
| export class AddonModAssignModule { | export class AddonModAssignModule { | ||||||
| @ -72,13 +75,15 @@ export class AddonModAssignModule { | |||||||
|             prefetchDelegate: CoreCourseModulePrefetchDelegate, prefetchHandler: AddonModAssignPrefetchHandler, |             prefetchDelegate: CoreCourseModulePrefetchDelegate, prefetchHandler: AddonModAssignPrefetchHandler, | ||||||
|             cronDelegate: CoreCronDelegate, syncHandler: AddonModAssignSyncCronHandler, updateManager: CoreUpdateManagerProvider, |             cronDelegate: CoreCronDelegate, syncHandler: AddonModAssignSyncCronHandler, updateManager: CoreUpdateManagerProvider, | ||||||
|             contentLinksDelegate: CoreContentLinksDelegate, linkHandler: AddonModAssignIndexLinkHandler, |             contentLinksDelegate: CoreContentLinksDelegate, linkHandler: AddonModAssignIndexLinkHandler, | ||||||
|             listLinkHandler: AddonModAssignListLinkHandler) { |             listLinkHandler: AddonModAssignListLinkHandler, pushNotificationsDelegate: CorePushNotificationsDelegate, | ||||||
|  |             pushClickHandler: AddonModAssignPushClickHandler) { | ||||||
| 
 | 
 | ||||||
|         moduleDelegate.registerHandler(moduleHandler); |         moduleDelegate.registerHandler(moduleHandler); | ||||||
|         prefetchDelegate.registerHandler(prefetchHandler); |         prefetchDelegate.registerHandler(prefetchHandler); | ||||||
|         cronDelegate.register(syncHandler); |         cronDelegate.register(syncHandler); | ||||||
|         contentLinksDelegate.registerHandler(linkHandler); |         contentLinksDelegate.registerHandler(linkHandler); | ||||||
|         contentLinksDelegate.registerHandler(listLinkHandler); |         contentLinksDelegate.registerHandler(listLinkHandler); | ||||||
|  |         pushNotificationsDelegate.registerClickHandler(pushClickHandler); | ||||||
| 
 | 
 | ||||||
|         // Allow migrating the tables from the old app to the new schema.
 |         // Allow migrating the tables from the old app to the new schema.
 | ||||||
|         updateManager.registerSiteTablesMigration([ |         updateManager.registerSiteTablesMigration([ | ||||||
|  | |||||||
							
								
								
									
										62
									
								
								src/addon/mod/assign/providers/push-click-handler.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								src/addon/mod/assign/providers/push-click-handler.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | |||||||
|  | // (C) Copyright 2015 Martin Dougiamas
 | ||||||
|  | //
 | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||||
|  | // you may not use this file except in compliance with the License.
 | ||||||
|  | // You may obtain a copy of the License at
 | ||||||
|  | //
 | ||||||
|  | //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  | //
 | ||||||
|  | // Unless required by applicable law or agreed to in writing, software
 | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||||
|  | // See the License for the specific language governing permissions and
 | ||||||
|  | // limitations under the License.
 | ||||||
|  | 
 | ||||||
|  | import { Injectable } from '@angular/core'; | ||||||
|  | import { CoreUrlUtilsProvider } from '@providers/utils/url'; | ||||||
|  | import { CoreUtilsProvider } from '@providers/utils/utils'; | ||||||
|  | import { CorePushNotificationsClickHandler } from '@core/pushnotifications/providers/delegate'; | ||||||
|  | import { CoreCourseHelperProvider } from '@core/course/providers/helper'; | ||||||
|  | import { AddonModAssignProvider } from './assign'; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Handler for assign push notifications clicks. | ||||||
|  |  */ | ||||||
|  | @Injectable() | ||||||
|  | export class AddonModAssignPushClickHandler implements CorePushNotificationsClickHandler { | ||||||
|  |     name = 'AddonModAssignPushClickHandler'; | ||||||
|  |     priority = 200; | ||||||
|  |     featureName = 'CoreCourseModuleDelegate_AddonModAssign'; | ||||||
|  | 
 | ||||||
|  |     constructor(private utils: CoreUtilsProvider, private assignProvider: AddonModAssignProvider, | ||||||
|  |             private urlUtils: CoreUrlUtilsProvider, private courseHelper: CoreCourseHelperProvider) {} | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Check if a notification click is handled by this handler. | ||||||
|  |      * | ||||||
|  |      * @param {any} notification The notification to check. | ||||||
|  |      * @return {boolean} Whether the notification click is handled by this handler | ||||||
|  |      */ | ||||||
|  |     handles(notification: any): boolean | Promise<boolean> { | ||||||
|  |         return this.utils.isTrueOrOne(notification.notif) && notification.moodlecomponent == 'mod_assign' && | ||||||
|  |                 notification.name == 'assign_notification'; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Handle the notification click. | ||||||
|  |      * | ||||||
|  |      * @param {any} notification The notification to check. | ||||||
|  |      * @return {Promise<any>} Promise resolved when done. | ||||||
|  |      */ | ||||||
|  |     handleClick(notification: any): Promise<any> { | ||||||
|  |         const contextUrlParams = this.urlUtils.extractUrlParams(notification.contexturl), | ||||||
|  |             courseId = Number(notification.courseid), | ||||||
|  |             moduleId = Number(contextUrlParams.id); | ||||||
|  | 
 | ||||||
|  |         return this.assignProvider.invalidateContent(moduleId, courseId, notification.site).catch(() => { | ||||||
|  |             // Ignore errors.
 | ||||||
|  |         }).then(() => { | ||||||
|  |             return this.courseHelper.navigateToModule(moduleId, notification.site, courseId); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -59,7 +59,7 @@ export class AddonModForumPushClickHandler implements CorePushNotificationsClick | |||||||
|             pageParams.postId = Number(contextUrlParams.urlHash.replace('p', '')); |             pageParams.postId = Number(contextUrlParams.urlHash.replace('p', '')); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         return this.forumProvider.invalidateDiscussionPosts(pageParams.discussionId).catch(() => { |         return this.forumProvider.invalidateDiscussionPosts(pageParams.discussionId, notification.site).catch(() => { | ||||||
|             // Ignore errors.
 |             // Ignore errors.
 | ||||||
|         }).then(() => { |         }).then(() => { | ||||||
|             return this.linkHelper.goInSite(undefined, 'AddonModForumDiscussionPage', pageParams, notification.site); |             return this.linkHelper.goInSite(undefined, 'AddonModForumDiscussionPage', pageParams, notification.site); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user