Appearance
usePermission
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