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.

80 lines 7.85 kB
import { firstValueFrom } from 'rxjs'; import { NgxPwaVersionReadyDialogComponent } from '../components/version-ready-dialog/version-ready-dialog.component'; /** * Provides helpers for handling pwa version updates. */ export class NgxPwaUpdateService { swUpdate; dialog; constructor(swUpdate, dialog) { this.swUpdate = swUpdate; this.dialog = dialog; } /** * Subscribes to any version update events. */ subscribeToUpdateEvents() { if (!this.swUpdate.isEnabled) { return; } this.swUpdate.versionUpdates.subscribe(e => { switch (e.type) { case 'VERSION_READY': { void this.onVersionReady(); break; } case 'VERSION_DETECTED': { this.onVersionDetected(); break; } case 'VERSION_INSTALLATION_FAILED': { this.onVersionInstallationFailed(); break; } case 'NO_NEW_VERSION_DETECTED': { this.onNoNewVersionDetected(); break; } } }); } /** * Gets called when no new version was found. */ onNoNewVersionDetected() { return; } /** * Gets called when the installation of a new version fails. */ onVersionInstallationFailed() { return; } /** * Gets called when a new version has been found. */ onVersionDetected() { return; } /** * Gets called when a new version has been installed. */ async onVersionReady() { const dialogRef = this.dialog.open(NgxPwaVersionReadyDialogComponent, { autoFocus: false, restoreFocus: false }); const res = await firstValueFrom(dialogRef.afterClosed()); if (res === 'update') { window.location.reload(); } } /** * Manually checks for updates. * @returns Whether or not new updates are available. */ async checkForUpdates() { return await this.swUpdate.checkForUpdate(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcHdhL3NyYy9zZXJ2aWNlcy91cGRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBRXRIOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUVDO0lBQXFDO0lBQWxFLFlBQTZCLFFBQWtCLEVBQW1CLE1BQWlCO1FBQXRELGFBQVEsR0FBUixRQUFRLENBQVU7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztJQUFJLENBQUM7SUFFeEY7O09BRUc7SUFDSCx1QkFBdUI7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0IsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUNuQixLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDM0IsTUFBTTtnQkFDVixDQUFDO2dCQUNELEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDO29CQUN0QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDekIsTUFBTTtnQkFDVixDQUFDO2dCQUNELEtBQUssNkJBQTZCLENBQUMsQ0FBQyxDQUFDO29CQUNqQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztvQkFDbkMsTUFBTTtnQkFDVixDQUFDO2dCQUNELEtBQUsseUJBQXlCLENBQUMsQ0FBQyxDQUFDO29CQUM3QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDOUIsTUFBTTtnQkFDVixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ08sc0JBQXNCO1FBQzVCLE9BQU87SUFDWCxDQUFDO0lBRUQ7O09BRUc7SUFDTywyQkFBMkI7UUFDakMsT0FBTztJQUNYLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQjtRQUN2QixPQUFPO0lBQ1gsQ0FBQztJQUVEOztPQUVHO0lBQ08sS0FBSyxDQUFDLGNBQWM7UUFDMUIsTUFBTSxTQUFTLEdBQW9ELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMvRSxpQ0FBaUMsRUFDakM7WUFDSSxTQUFTLEVBQUUsS0FBSztZQUNoQixZQUFZLEVBQUUsS0FBSztTQUN0QixDQUNKLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBd0IsTUFBTSxjQUFjLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUF3QixDQUFDO1FBQ3RHLElBQUksR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsZUFBZTtRQUNqQixPQUFPLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTd1VwZGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3NlcnZpY2Utd29ya2VyJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5neFB3YVZlcnNpb25SZWFkeURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdmVyc2lvbi1yZWFkeS1kaWFsb2cvdmVyc2lvbi1yZWFkeS1kaWFsb2cuY29tcG9uZW50JztcblxuLyoqXG4gKiBQcm92aWRlcyBoZWxwZXJzIGZvciBoYW5kbGluZyBwd2EgdmVyc2lvbiB1cGRhdGVzLlxuICovXG5leHBvcnQgY2xhc3MgTmd4UHdhVXBkYXRlU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN3VXBkYXRlOiBTd1VwZGF0ZSwgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZykgeyB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmVzIHRvIGFueSB2ZXJzaW9uIHVwZGF0ZSBldmVudHMuXG4gICAgICovXG4gICAgc3Vic2NyaWJlVG9VcGRhdGVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zd1VwZGF0ZS5pc0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN3VXBkYXRlLnZlcnNpb25VcGRhdGVzLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoZS50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnVkVSU0lPTl9SRUFEWSc6IHtcbiAgICAgICAgICAgICAgICAgICAgdm9pZCB0aGlzLm9uVmVyc2lvblJlYWR5KCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdWRVJTSU9OX0RFVEVDVEVEJzoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVmVyc2lvbkRldGVjdGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdWRVJTSU9OX0lOU1RBTExBVElPTl9GQUlMRUQnOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25WZXJzaW9uSW5zdGFsbGF0aW9uRmFpbGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdOT19ORVdfVkVSU0lPTl9ERVRFQ1RFRCc6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5vTmV3VmVyc2lvbkRldGVjdGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBjYWxsZWQgd2hlbiBubyBuZXcgdmVyc2lvbiB3YXMgZm91bmQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uTm9OZXdWZXJzaW9uRGV0ZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGNhbGxlZCB3aGVuIHRoZSBpbnN0YWxsYXRpb24gb2YgYSBuZXcgdmVyc2lvbiBmYWlscy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25WZXJzaW9uSW5zdGFsbGF0aW9uRmFpbGVkKCk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBjYWxsZWQgd2hlbiBhIG5ldyB2ZXJzaW9uIGhhcyBiZWVuIGZvdW5kLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblZlcnNpb25EZXRlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgY2FsbGVkIHdoZW4gYSBuZXcgdmVyc2lvbiBoYXMgYmVlbiBpbnN0YWxsZWQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFzeW5jIG9uVmVyc2lvblJlYWR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hQd2FWZXJzaW9uUmVhZHlEaWFsb2dDb21wb25lbnQ+ID0gdGhpcy5kaWFsb2cub3BlbihcbiAgICAgICAgICAgIE5neFB3YVZlcnNpb25SZWFkeURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmVzOiAndXBkYXRlJyB8ICdjYW5jZWwnID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkpIGFzICd1cGRhdGUnIHwgJ2NhbmNlbCc7XG4gICAgICAgIGlmIChyZXMgPT09ICd1cGRhdGUnKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNYW51YWxseSBjaGVja3MgZm9yIHVwZGF0ZXMuXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgbmV3IHVwZGF0ZXMgYXJlIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGVja0ZvclVwZGF0ZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN3VXBkYXRlLmNoZWNrRm9yVXBkYXRlKCk7XG4gICAgfVxufSJdfQ==