UNPKG

ngx-pwa

Version:

Provides functionality around the progressive web app functionality in angular. Most notably the an approach to cache POST, UPDATE and DELETE requests.

45 lines 6.04 kB
import { firstValueFrom } from 'rxjs'; /** * A base service that provides functionality regarding notifications. */ export class NgxPwaNotificationService { swPush; http; // eslint-disable-next-line jsdoc/require-returns /** * Whether or not the current user has notifications enabled. */ get hasNotificationsEnabled() { return this.swPush.isEnabled; } constructor(swPush, http) { this.swPush = swPush; this.http = http; } /** * Asks the user for permission to use push notifications. */ async askForNotificationPermission() { const pushSubscription = await this.swPush.requestSubscription({ serverPublicKey: this.VAPID_PUBLIC_KEY }); void this.enableNotifications(pushSubscription); } /** * Enables notifications by sending a push subscription to the server. * @param pushSubscription - The push subscription to send to the server. */ async enableNotifications(pushSubscription) { await firstValueFrom(this.http.post(this.API_ENABLE_NOTIFICATIONS_URL, pushSubscription)); } /** * Disables notifications. */ async disableNotifications() { const pushSubscription = await firstValueFrom(this.swPush.subscription); if (pushSubscription == undefined) { return; } await firstValueFrom(this.http.post(this.API_DISABLE_NOTIFICATIONS_URL, pushSubscription)); await this.swPush.unsubscribe(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHdhL3NyYy9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDOztHQUVHO0FBQ0gsTUFBTSxPQUFnQix5QkFBeUI7SUEwQmQ7SUFBaUM7SUFSOUQsaURBQWlEO0lBQ2pEOztPQUVHO0lBQ0gsSUFBSSx1QkFBdUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBNkIsTUFBYyxFQUFtQixJQUFnQjtRQUFqRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQW1CLFNBQUksR0FBSixJQUFJLENBQVk7SUFBRyxDQUFDO0lBRWxGOztPQUVHO0lBQ0gsS0FBSyxDQUFDLDRCQUE0QjtRQUM5QixNQUFNLGdCQUFnQixHQUFxQixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM3SCxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDTyxLQUFLLENBQUMsbUJBQW1CLENBQUMsZ0JBQWtDO1FBQ2xFLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLG9CQUFvQjtRQUN0QixNQUFNLGdCQUFnQixHQUE0QixNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pHLElBQUksZ0JBQWdCLElBQUksU0FBUyxFQUFFLENBQUM7WUFDaEMsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzNGLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU3dQdXNoIH0gZnJvbSAnQGFuZ3VsYXIvc2VydmljZS13b3JrZXInO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBIGJhc2Ugc2VydmljZSB0aGF0IHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgcmVnYXJkaW5nIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3hQd2FOb3RpZmljYXRpb25TZXJ2aWNlIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSB1cmwgdG8gc2VuZCBhIG5ldyBwdXNoIHN1YnNjcmlwdGlvbiB0by5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSBBUElfRU5BQkxFX05PVElGSUNBVElPTlNfVVJMOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdXJsIHRvIHNlbmQgYSByZXF1ZXN0IHRvIHdoZW4gd2FudGluZyB0byBkaXNhYmxlIG5vdGlmaWNhdGlvbnMuXG4gICAgICovXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgQVBJX0RJU0FCTEVfTk9USUZJQ0FUSU9OU19VUkw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBwdWJsaWMga2V5IG9mIHlvdXIgVkFQSUQga2V5IHBhaXIuXG4gICAgICogSXMgbmVlZGVkIHRvIHJlY2VpdmUgYW5kIGRpc3BsYXkgcHVzaCBub3RpZmljYXRpb25zLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHJlYWRvbmx5IFZBUElEX1BVQkxJQ19LRVk6IHN0cmluZztcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLXJldHVybnNcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCB1c2VyIGhhcyBub3RpZmljYXRpb25zIGVuYWJsZWQuXG4gICAgICovXG4gICAgZ2V0IGhhc05vdGlmaWNhdGlvbnNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zd1B1c2guaXNFbmFibGVkO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3dQdXNoOiBTd1B1c2gsIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCkge31cblxuICAgIC8qKlxuICAgICAqIEFza3MgdGhlIHVzZXIgZm9yIHBlcm1pc3Npb24gdG8gdXNlIHB1c2ggbm90aWZpY2F0aW9ucy5cbiAgICAgKi9cbiAgICBhc3luYyBhc2tGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBwdXNoU3Vic2NyaXB0aW9uOiBQdXNoU3Vic2NyaXB0aW9uID0gYXdhaXQgdGhpcy5zd1B1c2gucmVxdWVzdFN1YnNjcmlwdGlvbih7IHNlcnZlclB1YmxpY0tleTogdGhpcy5WQVBJRF9QVUJMSUNfS0VZIH0pO1xuICAgICAgICB2b2lkIHRoaXMuZW5hYmxlTm90aWZpY2F0aW9ucyhwdXNoU3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIG5vdGlmaWNhdGlvbnMgYnkgc2VuZGluZyBhIHB1c2ggc3Vic2NyaXB0aW9uIHRvIHRoZSBzZXJ2ZXIuXG4gICAgICogQHBhcmFtIHB1c2hTdWJzY3JpcHRpb24gLSBUaGUgcHVzaCBzdWJzY3JpcHRpb24gdG8gc2VuZCB0byB0aGUgc2VydmVyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhc3luYyBlbmFibGVOb3RpZmljYXRpb25zKHB1c2hTdWJzY3JpcHRpb246IFB1c2hTdWJzY3JpcHRpb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3QodGhpcy5BUElfRU5BQkxFX05PVElGSUNBVElPTlNfVVJMLCBwdXNoU3Vic2NyaXB0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgbm90aWZpY2F0aW9ucy5cbiAgICAgKi9cbiAgICBhc3luYyBkaXNhYmxlTm90aWZpY2F0aW9ucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgcHVzaFN1YnNjcmlwdGlvbjogUHVzaFN1YnNjcmlwdGlvbiB8IG51bGwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnN3UHVzaC5zdWJzY3JpcHRpb24pO1xuICAgICAgICBpZiAocHVzaFN1YnNjcmlwdGlvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucG9zdCh0aGlzLkFQSV9ESVNBQkxFX05PVElGSUNBVElPTlNfVVJMLCBwdXNoU3Vic2NyaXB0aW9uKSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3dQdXNoLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufSJdfQ==