ngx-histaff-alpha 2.5.9 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -5,9 +5,10 @@ import * as i1 from "@angular/service-worker";
|
|
|
5
5
|
export class PushNotificationService {
|
|
6
6
|
constructor(swPush) {
|
|
7
7
|
this.swPush = swPush;
|
|
8
|
-
this.VAPID_PUBLIC_KEY = "
|
|
9
|
-
// "privateKey":"
|
|
8
|
+
this.VAPID_PUBLIC_KEY = "BDqqGCi_F6B_juuG8u388AYiFnhMgHrOGE534ltP1N1VXNTc_oWqDlsy-ilrQd_-q0gZQ_kNbSOY3J27-dRVs5s";
|
|
9
|
+
// "privateKey":"gqJeyMyL9qMTSeA7RbCYJti70_eHgOrCUKMB3VUJ_xI"
|
|
10
10
|
this.pushSubscription$ = new BehaviorSubject(undefined);
|
|
11
|
+
this.listenForMessages();
|
|
11
12
|
}
|
|
12
13
|
subscribeToNotifications() {
|
|
13
14
|
this.swPush.requestSubscription({
|
|
@@ -19,6 +20,64 @@ export class PushNotificationService {
|
|
|
19
20
|
})
|
|
20
21
|
.catch(err => console.error("Could not subscribe to notifications", err));
|
|
21
22
|
}
|
|
23
|
+
listenForMessages() {
|
|
24
|
+
this.swPush.messages.subscribe(message => {
|
|
25
|
+
console.log('Received push message:', message);
|
|
26
|
+
});
|
|
27
|
+
console.log('Notification permission:', Notification.permission);
|
|
28
|
+
if ('serviceWorker' in navigator) {
|
|
29
|
+
navigator.serviceWorker.addEventListener('message', (event) => {
|
|
30
|
+
const msg = event.data;
|
|
31
|
+
if (msg.type === 'PUSH') {
|
|
32
|
+
console.log(`Message of type 'PUSH' received from service worker:`, msg);
|
|
33
|
+
this.handlePushMessage(msg);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
handlePushMessage(message) {
|
|
39
|
+
console.log('Handling push message:', message);
|
|
40
|
+
const { data } = message;
|
|
41
|
+
// Standard template
|
|
42
|
+
/*
|
|
43
|
+
{
|
|
44
|
+
"notification": {
|
|
45
|
+
"title": "Hello!",
|
|
46
|
+
"body": "This is a test notification",
|
|
47
|
+
"icon": "https://blog.tanleica.com/static/public/alpha-icon-72x72.png",
|
|
48
|
+
"badge": "https://blog.tanleica.com/static/public/alpha-icon-72x72.png",
|
|
49
|
+
"data": {
|
|
50
|
+
"onActionClick": {
|
|
51
|
+
"default": {
|
|
52
|
+
"url": "https://alpha.histaff.vn"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
*/
|
|
60
|
+
// Check if the data object has a 'notification' property
|
|
61
|
+
console.log("The data was: ", data);
|
|
62
|
+
if (!data?.notification) {
|
|
63
|
+
console.error('Notification data is missing or invalid:', data);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// Destructure the notification and its nested data object
|
|
67
|
+
const { notification } = data;
|
|
68
|
+
const { data: notificationData } = notification;
|
|
69
|
+
// Check if the notification data object has the expected structure
|
|
70
|
+
if (!notificationData || !notificationData.onActionClick || !notificationData.onActionClick.default) {
|
|
71
|
+
console.error('Notification data is missing or invalid:', notificationData);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Destructure the default action object from the notification data
|
|
75
|
+
const { default: defaultAction } = notificationData.onActionClick;
|
|
76
|
+
// Check if the default action's operation is 'openWindow' and if so, open the URL
|
|
77
|
+
if (defaultAction && defaultAction.operation === 'openWindow' && defaultAction.url) {
|
|
78
|
+
window.open(defaultAction.url);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
22
81
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PushNotificationService, deps: [{ token: i1.SwPush }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
23
82
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PushNotificationService, providedIn: 'root' }); }
|
|
24
83
|
}
|
|
@@ -28,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
28
87
|
providedIn: 'root'
|
|
29
88
|
}]
|
|
30
89
|
}], ctorParameters: () => [{ type: i1.SwPush }] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaC1ub3RpZmljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3NlcnZpY2VzL3B1c2gtbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLdkMsTUFBTSxPQUFPLHVCQUF1QjtJQVNsQyxZQUNVLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUmYscUJBQWdCLEdBQUcseUZBQXlGLENBQUM7UUFDdEgsNkRBQTZEO1FBRzdELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUErQixTQUFTLENBQUMsQ0FBQztRQU0vRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7WUFDOUIsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDdkMsQ0FBQzthQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVPLGlCQUFpQjtRQUV2QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWpFLElBQUksZUFBZSxJQUFJLFNBQVMsRUFBRTtZQUNoQyxTQUFTLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUM1RCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUN2QixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN6RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQzdCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUFZO1FBRXBDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0MsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUd6QixvQkFBb0I7UUFDcEI7Ozs7Ozs7Ozs7Ozs7Ozs7O1VBaUJFO1FBRUYseURBQXlEO1FBQ3pELE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRSxPQUFPO1NBQ1I7UUFFRCwwREFBMEQ7UUFDMUQsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQztRQUM5QixNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsWUFBWSxDQUFDO1FBRWhELG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ25HLE9BQU8sQ0FBQyxLQUFLLENBQUMsMENBQTBDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RSxPQUFPO1NBQ1I7UUFFRCxtRUFBbUU7UUFDbkUsTUFBTSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7UUFFbEUsa0ZBQWtGO1FBQ2xGLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxTQUFTLEtBQUssWUFBWSxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUU7WUFDbEYsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDOzhHQS9GVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTd1B1c2ggfSBmcm9tICdAYW5ndWxhci9zZXJ2aWNlLXdvcmtlcic7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHVzaE5vdGlmaWNhdGlvblNlcnZpY2Uge1xyXG5cclxuICByZWFkb25seSBWQVBJRF9QVUJMSUNfS0VZID0gXCJCRHFxR0NpX0Y2Ql9qdXVHOHUzODhBWWlGbmhNZ0hyT0dFNTM0bHRQMU4xVlhOVGNfb1dxRGxzeS1pbHJRZF8tcTBnWlFfa05iU09ZM0oyNy1kUlZzNXNcIjtcclxuICAvLyBcInByaXZhdGVLZXlcIjpcImdxSmV5TXlMOXFNVFNlQTdSYkNZSnRpNzBfZUhnT3JDVUtNQjNWVUpfeElcIlxyXG5cclxuXHJcbiAgcHVzaFN1YnNjcmlwdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFB1c2hTdWJzY3JpcHRpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc3dQdXNoOiBTd1B1c2hcclxuICApIHtcclxuICAgIHRoaXMubGlzdGVuRm9yTWVzc2FnZXMoKTtcclxuICB9XHJcblxyXG4gIHN1YnNjcmliZVRvTm90aWZpY2F0aW9ucygpIHtcclxuICAgIHRoaXMuc3dQdXNoLnJlcXVlc3RTdWJzY3JpcHRpb24oe1xyXG4gICAgICBzZXJ2ZXJQdWJsaWNLZXk6IHRoaXMuVkFQSURfUFVCTElDX0tFWVxyXG4gICAgfSlcclxuICAgICAgLnRoZW4oc3ViID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcInJlcXVlc3RTdWJzY3JpcHRpb25cIiwgc3ViKVxyXG4gICAgICAgIHRoaXMucHVzaFN1YnNjcmlwdGlvbiQubmV4dChzdWIpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoXCJDb3VsZCBub3Qgc3Vic2NyaWJlIHRvIG5vdGlmaWNhdGlvbnNcIiwgZXJyKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlbkZvck1lc3NhZ2VzKCkge1xyXG5cclxuICAgIHRoaXMuc3dQdXNoLm1lc3NhZ2VzLnN1YnNjcmliZShtZXNzYWdlID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIHB1c2ggbWVzc2FnZTonLCBtZXNzYWdlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdOb3RpZmljYXRpb24gcGVybWlzc2lvbjonLCBOb3RpZmljYXRpb24ucGVybWlzc2lvbik7XHJcblxyXG4gICAgaWYgKCdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IpIHtcclxuICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIChldmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IGV2ZW50LmRhdGE7XHJcbiAgICAgICAgaWYgKG1zZy50eXBlID09PSAnUFVTSCcpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGBNZXNzYWdlIG9mIHR5cGUgJ1BVU0gnIHJlY2VpdmVkIGZyb20gc2VydmljZSB3b3JrZXI6YCwgbXNnKTtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlUHVzaE1lc3NhZ2UobXNnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVQdXNoTWVzc2FnZShtZXNzYWdlOiBhbnkpIHtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnSGFuZGxpbmcgcHVzaCBtZXNzYWdlOicsIG1lc3NhZ2UpO1xyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBtZXNzYWdlO1xyXG5cclxuXHJcbiAgICAvLyBTdGFuZGFyZCB0ZW1wbGF0ZVxyXG4gICAgLypcclxuICAgIHsgXHJcbiAgICAgIFwibm90aWZpY2F0aW9uXCI6IHsgXHJcbiAgICAgICAgXCJ0aXRsZVwiOiBcIkhlbGxvIVwiLCBcclxuICAgICAgICBcImJvZHlcIjogXCJUaGlzIGlzIGEgdGVzdCBub3RpZmljYXRpb25cIiwgXHJcbiAgICAgICAgXCJpY29uXCI6IFwiaHR0cHM6Ly9ibG9nLnRhbmxlaWNhLmNvbS9zdGF0aWMvcHVibGljL2FscGhhLWljb24tNzJ4NzIucG5nXCIsIFxyXG4gICAgICAgIFwiYmFkZ2VcIjogXCJodHRwczovL2Jsb2cudGFubGVpY2EuY29tL3N0YXRpYy9wdWJsaWMvYWxwaGEtaWNvbi03Mng3Mi5wbmdcIiwgXHJcbiAgICAgICAgXCJkYXRhXCI6IHsgXHJcbiAgICAgICAgICBcIm9uQWN0aW9uQ2xpY2tcIjogeyBcclxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHsgXHJcbiAgICAgICAgICAgICAgXCJ1cmxcIjogXCJodHRwczovL2FscGhhLmhpc3RhZmYudm5cIiBcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgIH0gXHJcbiAgICAgICAgfSBcclxuICAgICAgfSBcclxuICAgIH1cclxuXHJcbiAgICAqL1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhIG9iamVjdCBoYXMgYSAnbm90aWZpY2F0aW9uJyBwcm9wZXJ0eVxyXG4gICAgY29uc29sZS5sb2coXCJUaGUgZGF0YSB3YXM6IFwiLCBkYXRhKTtcclxuICAgIGlmICghZGF0YT8ubm90aWZpY2F0aW9uKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vdGlmaWNhdGlvbiBkYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZDonLCBkYXRhKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERlc3RydWN0dXJlIHRoZSBub3RpZmljYXRpb24gYW5kIGl0cyBuZXN0ZWQgZGF0YSBvYmplY3RcclxuICAgIGNvbnN0IHsgbm90aWZpY2F0aW9uIH0gPSBkYXRhO1xyXG4gICAgY29uc3QgeyBkYXRhOiBub3RpZmljYXRpb25EYXRhIH0gPSBub3RpZmljYXRpb247XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIG5vdGlmaWNhdGlvbiBkYXRhIG9iamVjdCBoYXMgdGhlIGV4cGVjdGVkIHN0cnVjdHVyZVxyXG4gICAgaWYgKCFub3RpZmljYXRpb25EYXRhIHx8ICFub3RpZmljYXRpb25EYXRhLm9uQWN0aW9uQ2xpY2sgfHwgIW5vdGlmaWNhdGlvbkRhdGEub25BY3Rpb25DbGljay5kZWZhdWx0KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vdGlmaWNhdGlvbiBkYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZDonLCBub3RpZmljYXRpb25EYXRhKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERlc3RydWN0dXJlIHRoZSBkZWZhdWx0IGFjdGlvbiBvYmplY3QgZnJvbSB0aGUgbm90aWZpY2F0aW9uIGRhdGFcclxuICAgIGNvbnN0IHsgZGVmYXVsdDogZGVmYXVsdEFjdGlvbiB9ID0gbm90aWZpY2F0aW9uRGF0YS5vbkFjdGlvbkNsaWNrO1xyXG5cclxuICAgIC8vIENoZWNrIGlmIHRoZSBkZWZhdWx0IGFjdGlvbidzIG9wZXJhdGlvbiBpcyAnb3BlbldpbmRvdycgYW5kIGlmIHNvLCBvcGVuIHRoZSBVUkxcclxuICAgIGlmIChkZWZhdWx0QWN0aW9uICYmIGRlZmF1bHRBY3Rpb24ub3BlcmF0aW9uID09PSAnb3BlbldpbmRvdycgJiYgZGVmYXVsdEFjdGlvbi51cmwpIHtcclxuICAgICAgd2luZG93Lm9wZW4oZGVmYXVsdEFjdGlvbi51cmwpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -4013,9 +4013,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
|
|
|
4013
4013
|
class PushNotificationService {
|
|
4014
4014
|
constructor(swPush) {
|
|
4015
4015
|
this.swPush = swPush;
|
|
4016
|
-
this.VAPID_PUBLIC_KEY = "
|
|
4017
|
-
// "privateKey":"
|
|
4016
|
+
this.VAPID_PUBLIC_KEY = "BDqqGCi_F6B_juuG8u388AYiFnhMgHrOGE534ltP1N1VXNTc_oWqDlsy-ilrQd_-q0gZQ_kNbSOY3J27-dRVs5s";
|
|
4017
|
+
// "privateKey":"gqJeyMyL9qMTSeA7RbCYJti70_eHgOrCUKMB3VUJ_xI"
|
|
4018
4018
|
this.pushSubscription$ = new BehaviorSubject(undefined);
|
|
4019
|
+
this.listenForMessages();
|
|
4019
4020
|
}
|
|
4020
4021
|
subscribeToNotifications() {
|
|
4021
4022
|
this.swPush.requestSubscription({
|
|
@@ -4027,6 +4028,64 @@ class PushNotificationService {
|
|
|
4027
4028
|
})
|
|
4028
4029
|
.catch(err => console.error("Could not subscribe to notifications", err));
|
|
4029
4030
|
}
|
|
4031
|
+
listenForMessages() {
|
|
4032
|
+
this.swPush.messages.subscribe(message => {
|
|
4033
|
+
console.log('Received push message:', message);
|
|
4034
|
+
});
|
|
4035
|
+
console.log('Notification permission:', Notification.permission);
|
|
4036
|
+
if ('serviceWorker' in navigator) {
|
|
4037
|
+
navigator.serviceWorker.addEventListener('message', (event) => {
|
|
4038
|
+
const msg = event.data;
|
|
4039
|
+
if (msg.type === 'PUSH') {
|
|
4040
|
+
console.log(`Message of type 'PUSH' received from service worker:`, msg);
|
|
4041
|
+
this.handlePushMessage(msg);
|
|
4042
|
+
}
|
|
4043
|
+
});
|
|
4044
|
+
}
|
|
4045
|
+
}
|
|
4046
|
+
handlePushMessage(message) {
|
|
4047
|
+
console.log('Handling push message:', message);
|
|
4048
|
+
const { data } = message;
|
|
4049
|
+
// Standard template
|
|
4050
|
+
/*
|
|
4051
|
+
{
|
|
4052
|
+
"notification": {
|
|
4053
|
+
"title": "Hello!",
|
|
4054
|
+
"body": "This is a test notification",
|
|
4055
|
+
"icon": "https://blog.tanleica.com/static/public/alpha-icon-72x72.png",
|
|
4056
|
+
"badge": "https://blog.tanleica.com/static/public/alpha-icon-72x72.png",
|
|
4057
|
+
"data": {
|
|
4058
|
+
"onActionClick": {
|
|
4059
|
+
"default": {
|
|
4060
|
+
"url": "https://alpha.histaff.vn"
|
|
4061
|
+
}
|
|
4062
|
+
}
|
|
4063
|
+
}
|
|
4064
|
+
}
|
|
4065
|
+
}
|
|
4066
|
+
|
|
4067
|
+
*/
|
|
4068
|
+
// Check if the data object has a 'notification' property
|
|
4069
|
+
console.log("The data was: ", data);
|
|
4070
|
+
if (!data?.notification) {
|
|
4071
|
+
console.error('Notification data is missing or invalid:', data);
|
|
4072
|
+
return;
|
|
4073
|
+
}
|
|
4074
|
+
// Destructure the notification and its nested data object
|
|
4075
|
+
const { notification } = data;
|
|
4076
|
+
const { data: notificationData } = notification;
|
|
4077
|
+
// Check if the notification data object has the expected structure
|
|
4078
|
+
if (!notificationData || !notificationData.onActionClick || !notificationData.onActionClick.default) {
|
|
4079
|
+
console.error('Notification data is missing or invalid:', notificationData);
|
|
4080
|
+
return;
|
|
4081
|
+
}
|
|
4082
|
+
// Destructure the default action object from the notification data
|
|
4083
|
+
const { default: defaultAction } = notificationData.onActionClick;
|
|
4084
|
+
// Check if the default action's operation is 'openWindow' and if so, open the URL
|
|
4085
|
+
if (defaultAction && defaultAction.operation === 'openWindow' && defaultAction.url) {
|
|
4086
|
+
window.open(defaultAction.url);
|
|
4087
|
+
}
|
|
4088
|
+
}
|
|
4030
4089
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PushNotificationService, deps: [{ token: i1$2.SwPush }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4031
4090
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: PushNotificationService, providedIn: 'root' }); }
|
|
4032
4091
|
}
|