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 = "BNTipyXnkW6dhydO4XQFwPKRxD1aAYGuss86OmFJYj9Si9MjH87tjdX0LR2ABR4DPhdTGce5X9_t06mU2O5CSHo";
9
- // "privateKey":"sDjU5Wg-7U4p0NFHfK43DJ1QQp3IBrZUuqtQUOUBtII"
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaC1ub3RpZmljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL3NlcnZpY2VzL3B1c2gtbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFLdkMsTUFBTSxPQUFPLHVCQUF1QjtJQVNsQyxZQUNVLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUmYscUJBQWdCLEdBQUcseUZBQXlGLENBQUM7UUFDdEgsNkRBQTZEO1FBRzdELHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUErQixTQUFTLENBQUMsQ0FBQztJQUs3RSxDQUFDO0lBRUwsd0JBQXdCO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7WUFDOUIsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDdkMsQ0FBQzthQUNDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs4R0F0QlUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3dQdXNoIH0gZnJvbSAnQGFuZ3VsYXIvc2VydmljZS13b3JrZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFB1c2hOb3RpZmljYXRpb25TZXJ2aWNlIHtcclxuXHJcbiAgcmVhZG9ubHkgVkFQSURfUFVCTElDX0tFWSA9IFwiQk5UaXB5WG5rVzZkaHlkTzRYUUZ3UEtSeEQxYUFZR3Vzczg2T21GSllqOVNpOU1qSDg3dGpkWDBMUjJBQlI0RFBoZFRHY2U1WDlfdDA2bVUyTzVDU0hvXCI7XHJcbiAgLy8gXCJwcml2YXRlS2V5XCI6XCJzRGpVNVdnLTdVNHAwTkZIZks0M0RKMVFRcDNJQnJaVXVxdFFVT1VCdElJXCJcclxuXHJcblxyXG4gIHB1c2hTdWJzY3JpcHRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQdXNoU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN3UHVzaDogU3dQdXNoXHJcbiAgKSB7IH1cclxuXHJcbiAgc3Vic2NyaWJlVG9Ob3RpZmljYXRpb25zKCkge1xyXG4gICAgdGhpcy5zd1B1c2gucmVxdWVzdFN1YnNjcmlwdGlvbih7XHJcbiAgICAgIHNlcnZlclB1YmxpY0tleTogdGhpcy5WQVBJRF9QVUJMSUNfS0VZXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihzdWIgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwicmVxdWVzdFN1YnNjcmlwdGlvblwiLCBzdWIpXHJcbiAgICAgICAgdGhpcy5wdXNoU3Vic2NyaXB0aW9uJC5uZXh0KHN1Yik7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihcIkNvdWxkIG5vdCBzdWJzY3JpYmUgdG8gbm90aWZpY2F0aW9uc1wiLCBlcnIpKTtcclxuICB9XHJcbn1cclxuIl19
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 = "BNTipyXnkW6dhydO4XQFwPKRxD1aAYGuss86OmFJYj9Si9MjH87tjdX0LR2ABR4DPhdTGce5X9_t06mU2O5CSHo";
4017
- // "privateKey":"sDjU5Wg-7U4p0NFHfK43DJ1QQp3IBrZUuqtQUOUBtII"
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
  }