UNPKG

@ng-web-apis/permissions

Version:

A library for comfortable use of Permissions API in Angular applications

65 lines (58 loc) 2.6 kB
import * as i0 from '@angular/core'; import { InjectionToken, inject, Injectable } from '@angular/core'; import { Observable, Subscription, from, switchMap, fromEvent, startWith, map, shareReplay } from 'rxjs'; import { WA_NAVIGATOR } from '@ng-web-apis/common'; const WA_PERMISSIONS = new InjectionToken('[WA_PERMISSIONS]', { factory: () => inject(WA_NAVIGATOR).permissions, }); /** * @deprecated: drop in v5.0, use {@link WA_PERMISSIONS} */ const PERMISSIONS = WA_PERMISSIONS; const WA_PERMISSIONS_SUPPORT = new InjectionToken('[WA_PERMISSIONS_SUPPORT]', { factory: () => !!inject(PERMISSIONS), }); /** * @deprecated: drop in v5.0, use {@link WA_PERMISSIONS_SUPPORT} */ const PERMISSIONS_SUPPORT = WA_PERMISSIONS_SUPPORT; 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' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PermissionsService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); function isGranted(state) { return state === 'granted'; } function isDenied(state) { return state === 'denied'; } function isPrompt(state) { return state === 'prompt' || state === 'default'; } /** * Generated bundle index. Do not edit. */ export { PERMISSIONS, PERMISSIONS_SUPPORT, PermissionsService, WA_PERMISSIONS, WA_PERMISSIONS_SUPPORT, isDenied, isGranted, isPrompt }; //# sourceMappingURL=ng-web-apis-permissions.mjs.map