UNPKG

@ng-web-apis/permissions

Version:

A library for comfortable use of Permissions API in Angular applications

33 lines 6.05 kB
import { inject, Injectable } from '@angular/core'; import { from, fromEvent, map, Observable, shareReplay, startWith, Subscription, switchMap, } from 'rxjs'; import { WA_PERMISSIONS } from '../tokens/permissions'; import { WA_PERMISSIONS_SUPPORT } from '../tokens/permissions-support'; import * as i0 from "@angular/core"; class PermissionsService { permissions = inject(WA_PERMISSIONS); permissionsSupported = inject(WA_PERMISSIONS_SUPPORT); state(nameOrDescriptor) { const descriptor = typeof nameOrDescriptor === 'string' ? { name: nameOrDescriptor } : nameOrDescriptor; return new Observable((subscriber) => { if (!this.permissionsSupported) { subscriber.error('Permissions is not supported in your browser'); return new Subscription(); } return from(this.permissions.query(descriptor)) .pipe(switchMap((status) => fromEvent(status, 'change').pipe(startWith(null), map(() => status.state)))) .subscribe(subscriber); }).pipe(shareReplay({ bufferSize: 1, refCount: true })); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PermissionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PermissionsService, providedIn: 'root' }); } export { PermissionsService }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PermissionsService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvcGVybWlzc2lvbnMvc3JjL3NlcnZpY2VzL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUNILElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxFQUNILFVBQVUsRUFDVixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7O0FBSXJFLE1BR2Esa0JBQWtCO0lBQ1YsV0FBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUloRSxLQUFLLENBQ1IsZ0JBQXVEO1FBRXZELE1BQU0sVUFBVSxHQUNaLE9BQU8sZ0JBQWdCLEtBQUssUUFBUTtZQUNoQyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7WUFDMUIsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1FBRTNCLE9BQU8sSUFBSSxVQUFVLENBQWtCLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDNUIsVUFBVSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO2dCQUVqRSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUM7YUFDN0I7WUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDMUMsSUFBSSxDQUNELFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ2pCLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUM1QixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FDMUIsQ0FDSixDQUNKO2lCQUNBLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7d0dBaENRLGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmYsTUFBTTs7U0FFVCxrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGZyb20sXG4gICAgZnJvbUV2ZW50LFxuICAgIG1hcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHN0YXJ0V2l0aCxcbiAgICBTdWJzY3JpcHRpb24sXG4gICAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtXQV9QRVJNSVNTSU9OU30gZnJvbSAnLi4vdG9rZW5zL3Blcm1pc3Npb25zJztcbmltcG9ydCB7V0FfUEVSTUlTU0lPTlNfU1VQUE9SVH0gZnJvbSAnLi4vdG9rZW5zL3Blcm1pc3Npb25zLXN1cHBvcnQnO1xuXG5leHBvcnQgdHlwZSBQZXJtaXNzaW9uc1F1ZXJ5QXJncyA9IFBhcmFtZXRlcnM8dHlwZW9mIFBlcm1pc3Npb25zLnByb3RvdHlwZS5xdWVyeT5bMF07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9ucyA9IGluamVjdChXQV9QRVJNSVNTSU9OUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJtaXNzaW9uc1N1cHBvcnRlZCA9IGluamVjdChXQV9QRVJNSVNTSU9OU19TVVBQT1JUKTtcblxuICAgIHB1YmxpYyBzdGF0ZShuYW1lOiBQZXJtaXNzaW9uTmFtZSk6IE9ic2VydmFibGU8UGVybWlzc2lvblN0YXRlPjtcbiAgICBwdWJsaWMgc3RhdGUoZGVzY3JpcHRvcjogUGVybWlzc2lvbnNRdWVyeUFyZ3MpOiBPYnNlcnZhYmxlPFBlcm1pc3Npb25TdGF0ZT47XG4gICAgcHVibGljIHN0YXRlKFxuICAgICAgICBuYW1lT3JEZXNjcmlwdG9yOiBQZXJtaXNzaW9uTmFtZSB8IFBlcm1pc3Npb25zUXVlcnlBcmdzLFxuICAgICk6IE9ic2VydmFibGU8UGVybWlzc2lvblN0YXRlPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3I6IFBlcm1pc3Npb25EZXNjcmlwdG9yID1cbiAgICAgICAgICAgIHR5cGVvZiBuYW1lT3JEZXNjcmlwdG9yID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8ge25hbWU6IG5hbWVPckRlc2NyaXB0b3J9XG4gICAgICAgICAgICAgICAgOiBuYW1lT3JEZXNjcmlwdG9yO1xuXG4gICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxQZXJtaXNzaW9uU3RhdGU+KChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucGVybWlzc2lvbnNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKCdQZXJtaXNzaW9ucyBpcyBub3Qgc3VwcG9ydGVkIGluIHlvdXIgYnJvd3NlcicpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZyb20odGhpcy5wZXJtaXNzaW9ucy5xdWVyeShkZXNjcmlwdG9yKSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKChzdGF0dXMpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tRXZlbnQoc3RhdHVzLCAnY2hhbmdlJykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IHN0YXR1cy5zdGF0ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHN1YnNjcmliZXIpO1xuICAgICAgICB9KS5waXBlKHNoYXJlUmVwbGF5KHtidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZX0pKTtcbiAgICB9XG59XG4iXX0=