MOBILE-4214 pushnotifications: Add public key registration
parent
77605b87f4
commit
a0d49dc5e0
|
@ -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": {
|
||||
"version": "5.36.0",
|
||||
"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",
|
||||
"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": {
|
||||
"version": "4.0.0-moodle.2",
|
||||
"resolved": "https://registry.npmjs.org/@moodlehq/phonegap-plugin-push/-/phonegap-plugin-push-4.0.0-moodle.2.tgz",
|
||||
"integrity": "sha512-kxHnpCzM7VMw5XUrLeZX03bLkQzA3j//+4nq7MiZbLoliPsQRAxGqyZ9HmbLcPsvlt1h7NM1eSVG52qZ7D3PlQ=="
|
||||
"version": "4.0.0-moodle.3",
|
||||
"resolved": "https://registry.npmjs.org/@moodlehq/phonegap-plugin-push/-/phonegap-plugin-push-4.0.0-moodle.3.tgz",
|
||||
"integrity": "sha512-oJTmcVN6QBxo8+9uHEFTLCgNJkd7jeaT1MMM3ljDhR5EkFDkHwMMat/Km0tjm+9ToD0LYWHZfvLljpCZM5u3yg=="
|
||||
},
|
||||
"@mrmlnc/readdir-enhanced": {
|
||||
"version": "2.2.1",
|
||||
|
|
|
@ -65,7 +65,6 @@
|
|||
"@ionic-native/local-notifications": "5.36.0",
|
||||
"@ionic-native/media-capture": "5.36.0",
|
||||
"@ionic-native/network": "5.36.0",
|
||||
"@ionic-native/push": "5.36.0",
|
||||
"@ionic-native/qr-scanner": "5.36.0",
|
||||
"@ionic-native/splash-screen": "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-qrscanner": "3.0.1-moodle.5",
|
||||
"@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/http-loader": "6.0.0",
|
||||
"@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 { LocalNotifications } from '@ionic-native/local-notifications/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 { SplashScreen } from '@ionic-native/splash-screen/ngx';
|
||||
import { SQLite } from '@ionic-native/sqlite/ngx';
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
import { Injectable } from '@angular/core';
|
||||
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 { CoreSites } from '@services/sites';
|
||||
|
@ -750,6 +750,33 @@ export class CorePushNotificationsProvider {
|
|||
// Remove pending unregisters for this site.
|
||||
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.
|
||||
*/
|
||||
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 { LocalNotifications as LocalNotificationsService } from '@ionic-native/local-notifications/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 { StatusBar as StatusBarService } from '@ionic-native/status-bar/ngx';
|
||||
import { SplashScreen as SplashScreenService } from '@ionic-native/splash-screen/ngx';
|
||||
|
|
Loading…
Reference in New Issue