MOBILE-4214 pushnotifications: Add public key registration
This commit is contained in:
		
							parent
							
								
									77605b87f4
								
							
						
					
					
						commit
						a0d49dc5e0
					
				
							
								
								
									
										44
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										44
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -4197,21 +4197,6 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@ionic-native/push": { |  | ||||||
|       "version": "5.36.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/@ionic-native/push/-/push-5.36.0.tgz", |  | ||||||
|       "integrity": "sha512-N2Ei6qsIYOmqfz/kH9XpKeIp3C5Qe9NXebzH2ytkpwBApPiCc6h+9LOxgMB/rls9VfT0V0ZoxvJbac9UZ6SJmA==", |  | ||||||
|       "requires": { |  | ||||||
|         "@types/cordova": "^0.0.34" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "@types/cordova": { |  | ||||||
|           "version": "0.0.34", |  | ||||||
|           "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", |  | ||||||
|           "integrity": "sha512-rkiiTuf/z2wTd4RxFOb+clE7PF4AEJU0hsczbUdkHHBtkUmpWQpEddynNfJYKYtZFJKbq4F+brfekt1kx85IZA==" |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "@ionic-native/qr-scanner": { |     "@ionic-native/qr-scanner": { | ||||||
|       "version": "5.36.0", |       "version": "5.36.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@ionic-native/qr-scanner/-/qr-scanner-5.36.0.tgz", |       "resolved": "https://registry.npmjs.org/@ionic-native/qr-scanner/-/qr-scanner-5.36.0.tgz", | ||||||
| @ -11588,10 +11573,33 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/@moodlehq/cordova-plugin-zip/-/cordova-plugin-zip-3.1.0-moodle.1.tgz", |       "resolved": "https://registry.npmjs.org/@moodlehq/cordova-plugin-zip/-/cordova-plugin-zip-3.1.0-moodle.1.tgz", | ||||||
|       "integrity": "sha512-QD5S6bsm6awJrNMb8YN/vkYghKAMfZMHccdimx6s1i5S9fgZUSf7L477NJqjFu62imVZYJIJuavBbw5fR/562w==" |       "integrity": "sha512-QD5S6bsm6awJrNMb8YN/vkYghKAMfZMHccdimx6s1i5S9fgZUSf7L477NJqjFu62imVZYJIJuavBbw5fR/562w==" | ||||||
|     }, |     }, | ||||||
|  |     "@moodlehq/ionic-native-push": { | ||||||
|  |       "version": "5.36.0-moodle.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@moodlehq/ionic-native-push/-/ionic-native-push-5.36.0-moodle.2.tgz", | ||||||
|  |       "integrity": "sha512-UWT4WaoTEEqGQ5pu+CyakXCOhiXsQSb8mD8j89jDqV0hJyrIQ8zA2ciGW9Y/vd55NuqjCu1tNJcWEJ4WcRVv0Q==", | ||||||
|  |       "requires": { | ||||||
|  |         "@angular/core": "^9.1.12", | ||||||
|  |         "@ionic-native/core": "^5.1.0", | ||||||
|  |         "@types/cordova": "^11.0.0", | ||||||
|  |         "rxjs": "^5.5.0 || ^6.5.0" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "@angular/core": { | ||||||
|  |           "version": "9.1.13", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.13.tgz", | ||||||
|  |           "integrity": "sha512-mBm24Q9GjkAsxMAzqQ86U1078+yTEpr0+syMEruUtJ0HUH6Fzn3J+6xTLb+BVcGb9RkCkFaV9T5mcn6ZM0f++g==" | ||||||
|  |         }, | ||||||
|  |         "@types/cordova": { | ||||||
|  |           "version": "11.0.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-11.0.0.tgz", | ||||||
|  |           "integrity": "sha512-AtBm1IAqqXsXszJe6XxuA2iXLhraNCj25p/FHRyikPeW0Z3YfgM6qzWb+VJglJTmZc5lqRNy84cYM/sQI5v6Vw==" | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "@moodlehq/phonegap-plugin-push": { |     "@moodlehq/phonegap-plugin-push": { | ||||||
|       "version": "4.0.0-moodle.2", |       "version": "4.0.0-moodle.3", | ||||||
|       "resolved": "https://registry.npmjs.org/@moodlehq/phonegap-plugin-push/-/phonegap-plugin-push-4.0.0-moodle.2.tgz", |       "resolved": "https://registry.npmjs.org/@moodlehq/phonegap-plugin-push/-/phonegap-plugin-push-4.0.0-moodle.3.tgz", | ||||||
|       "integrity": "sha512-kxHnpCzM7VMw5XUrLeZX03bLkQzA3j//+4nq7MiZbLoliPsQRAxGqyZ9HmbLcPsvlt1h7NM1eSVG52qZ7D3PlQ==" |       "integrity": "sha512-oJTmcVN6QBxo8+9uHEFTLCgNJkd7jeaT1MMM3ljDhR5EkFDkHwMMat/Km0tjm+9ToD0LYWHZfvLljpCZM5u3yg==" | ||||||
|     }, |     }, | ||||||
|     "@mrmlnc/readdir-enhanced": { |     "@mrmlnc/readdir-enhanced": { | ||||||
|       "version": "2.2.1", |       "version": "2.2.1", | ||||||
|  | |||||||
| @ -65,7 +65,6 @@ | |||||||
|     "@ionic-native/local-notifications": "5.36.0", |     "@ionic-native/local-notifications": "5.36.0", | ||||||
|     "@ionic-native/media-capture": "5.36.0", |     "@ionic-native/media-capture": "5.36.0", | ||||||
|     "@ionic-native/network": "5.36.0", |     "@ionic-native/network": "5.36.0", | ||||||
|     "@ionic-native/push": "5.36.0", |  | ||||||
|     "@ionic-native/qr-scanner": "5.36.0", |     "@ionic-native/qr-scanner": "5.36.0", | ||||||
|     "@ionic-native/splash-screen": "5.36.0", |     "@ionic-native/splash-screen": "5.36.0", | ||||||
|     "@ionic-native/sqlite": "5.36.0", |     "@ionic-native/sqlite": "5.36.0", | ||||||
| @ -80,7 +79,8 @@ | |||||||
|     "@moodlehq/cordova-plugin-local-notification": "0.9.0-moodle.11", |     "@moodlehq/cordova-plugin-local-notification": "0.9.0-moodle.11", | ||||||
|     "@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.5", |     "@moodlehq/cordova-plugin-qrscanner": "3.0.1-moodle.5", | ||||||
|     "@moodlehq/cordova-plugin-zip": "3.1.0-moodle.1", |     "@moodlehq/cordova-plugin-zip": "3.1.0-moodle.1", | ||||||
|     "@moodlehq/phonegap-plugin-push": "4.0.0-moodle.2", |     "@moodlehq/ionic-native-push": "5.36.0-moodle.2", | ||||||
|  |     "@moodlehq/phonegap-plugin-push": "4.0.0-moodle.3", | ||||||
|     "@ngx-translate/core": "13.0.0", |     "@ngx-translate/core": "13.0.0", | ||||||
|     "@ngx-translate/http-loader": "6.0.0", |     "@ngx-translate/http-loader": "6.0.0", | ||||||
|     "@types/chart.js": "2.9.31", |     "@types/chart.js": "2.9.31", | ||||||
|  | |||||||
| @ -30,7 +30,7 @@ import { WebView } from '@ionic-native/ionic-webview/ngx'; | |||||||
| import { Keyboard } from '@ionic-native/keyboard/ngx'; | import { Keyboard } from '@ionic-native/keyboard/ngx'; | ||||||
| import { LocalNotifications } from '@ionic-native/local-notifications/ngx'; | import { LocalNotifications } from '@ionic-native/local-notifications/ngx'; | ||||||
| import { MediaCapture } from '@ionic-native/media-capture/ngx'; | import { MediaCapture } from '@ionic-native/media-capture/ngx'; | ||||||
| import { Push } from '@ionic-native/push/ngx'; | import { Push } from '@moodlehq/ionic-native-push/ngx'; | ||||||
| import { QRScanner } from '@ionic-native/qr-scanner/ngx'; | import { QRScanner } from '@ionic-native/qr-scanner/ngx'; | ||||||
| import { SplashScreen } from '@ionic-native/splash-screen/ngx'; | import { SplashScreen } from '@ionic-native/splash-screen/ngx'; | ||||||
| import { SQLite } from '@ionic-native/sqlite/ngx'; | import { SQLite } from '@ionic-native/sqlite/ngx'; | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ | |||||||
| 
 | 
 | ||||||
| import { Injectable } from '@angular/core'; | import { Injectable } from '@angular/core'; | ||||||
| import { ILocalNotification } from '@ionic-native/local-notifications'; | import { ILocalNotification } from '@ionic-native/local-notifications'; | ||||||
| import { NotificationEventResponse, PushOptions, RegistrationEventResponse } from '@ionic-native/push/ngx'; | import { NotificationEventResponse, PushOptions, RegistrationEventResponse } from '@moodlehq/ionic-native-push/ngx'; | ||||||
| 
 | 
 | ||||||
| import { CoreApp } from '@services/app'; | import { CoreApp } from '@services/app'; | ||||||
| import { CoreSites } from '@services/sites'; | import { CoreSites } from '@services/sites'; | ||||||
| @ -750,6 +750,33 @@ export class CorePushNotificationsProvider { | |||||||
|             // Remove pending unregisters for this site.
 |             // Remove pending unregisters for this site.
 | ||||||
|             await CoreUtils.ignoreErrors(this.pendingUnregistersTable.deleteByPrimaryKey({ siteid: site.getId() })); |             await CoreUtils.ignoreErrors(this.pendingUnregistersTable.deleteByPrimaryKey({ siteid: site.getId() })); | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         this.registerPublicKeyOnMoodle(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Register a public key on a Moodle site. | ||||||
|  |      */ | ||||||
|  |     async registerPublicKeyOnMoodle(): Promise<void> { | ||||||
|  |         this.logger.debug('Register public key on Moodle.'); | ||||||
|  | 
 | ||||||
|  |         const site = await CoreSites.getSite(); | ||||||
|  | 
 | ||||||
|  |         const publicKey = await Push.getPublicKey(); | ||||||
|  |         if (publicKey == null) { | ||||||
|  |             throw new CoreError('Cannot get app public key.'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         const data: CoreUserUpdateUserDevicePublicKeyWSParams = { | ||||||
|  |             uuid: Device.uuid, | ||||||
|  |             appid: CoreConstants.CONFIG.app_id, | ||||||
|  |             publickey: publicKey, | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         await site.write<CoreUserUpdateUserDevicePublicKeyWSResponse>( | ||||||
|  |             'core_user_update_user_device_public_key', | ||||||
|  |             data, | ||||||
|  |         ); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -936,3 +963,20 @@ export type CoreUserAddUserDeviceWSParams = { | |||||||
|  * Data returned by core_user_add_user_device WS. |  * Data returned by core_user_add_user_device WS. | ||||||
|  */ |  */ | ||||||
| export type CoreUserAddUserDeviceWSResponse = CoreWSExternalWarning[][]; | export type CoreUserAddUserDeviceWSResponse = CoreWSExternalWarning[][]; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Params of core_user_update_user_device_public_key WS. | ||||||
|  |  */ | ||||||
|  | export type CoreUserUpdateUserDevicePublicKeyWSParams = { | ||||||
|  |     uuid: string; | ||||||
|  |     appid: string; | ||||||
|  |     publickey: string; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * Data returned by core_user_update_user_device_public_key WS. | ||||||
|  |  */ | ||||||
|  | export type CoreUserUpdateUserDevicePublicKeyWSResponse = { | ||||||
|  |     status: boolean; | ||||||
|  |     warnings?: CoreWSExternalWarning[]; | ||||||
|  | }; | ||||||
|  | |||||||
| @ -53,7 +53,7 @@ import { WebView as WebViewService } from '@ionic-native/ionic-webview/ngx'; | |||||||
| import { Keyboard as KeyboardService } from '@ionic-native/keyboard/ngx'; | import { Keyboard as KeyboardService } from '@ionic-native/keyboard/ngx'; | ||||||
| import { LocalNotifications as LocalNotificationsService } from '@ionic-native/local-notifications/ngx'; | import { LocalNotifications as LocalNotificationsService } from '@ionic-native/local-notifications/ngx'; | ||||||
| import { MediaCapture as MediaCaptureService } from '@ionic-native/media-capture/ngx'; | import { MediaCapture as MediaCaptureService } from '@ionic-native/media-capture/ngx'; | ||||||
| import { Push as PushService } from '@ionic-native/push/ngx'; | import { Push as PushService } from '@moodlehq/ionic-native-push/ngx'; | ||||||
| import { QRScanner as QRScannerService } from '@ionic-native/qr-scanner/ngx'; | import { QRScanner as QRScannerService } from '@ionic-native/qr-scanner/ngx'; | ||||||
| import { StatusBar as StatusBarService } from '@ionic-native/status-bar/ngx'; | import { StatusBar as StatusBarService } from '@ionic-native/status-bar/ngx'; | ||||||
| import { SplashScreen as SplashScreenService } from '@ionic-native/splash-screen/ngx'; | import { SplashScreen as SplashScreenService } from '@ionic-native/splash-screen/ngx'; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user