Skip to content

usePermission

Category
Export Size
498 B
Last Changed
5 days ago
Related

Reactive Permissions API state

Demo

Usage

tsx
import { 
usePermission
} from '@reause/core'
const
microphoneAccess
=
usePermission
('microphone') // 'granted' | 'denied' | 'prompt'

Type Declarations

Toggle
ts
export type GeneralPermissionDescriptor = PermissionDescriptor | {
    name: DescriptorNamePolyfill;
}

export interface UsePermissionOptions<Controls extends boolean = false> {
    controls?: Controls;
    navigator?: Navigator;
}

export type UsePermissionReturn = PermissionState

export interface UsePermissionReturnWithControls {
    state: UsePermissionReturn;
    isSupported: boolean;
    query: () => Promise<PermissionStatus | undefined>;
}

type DescriptorNamePolyfill = 'accelerometer' | 'accessibility-events' | 'ambient-light-sensor' | 'background-sync' | 'camera' | 'clipboard-read' | 'clipboard-write' | 'gyroscope' | 'magnetometer' | 'microphone' | 'notifications' | 'payment-handler' | 'persistent-storage' | 'push' | 'speaker' | 'local-fonts'

export function usePermission(permissionDesc: GeneralPermissionDescriptor | GeneralPermissionDescriptor['name'], options?: UsePermissionOptions<false>): UsePermissionReturn

export function usePermission(permissionDesc: GeneralPermissionDescriptor | GeneralPermissionDescriptor['name'], options: UsePermissionOptions<true>): UsePermissionReturnWithControls

Source

Source · Demo · VueUse

Contributors

hairyf

Changelog

v0.1.0 on
f4741 - fix(core): resolve usePermission audit findings (#617)

Released under the MIT License. v0.1.8