diff --git a/README.md b/README.md index cf579266b6..156047304f 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ - [`useSessionStorage`](./docs/useSessionStorage.md) — manages a value in `sessionStorage`. - [`useThrottle` and `useThrottleFn`](./docs/useThrottle.md) — throttles a function. [![][img-demo]](https://streamich.github.io/react-use/?path=/story/side-effects-usethrottle--demo) - [`useTitle`](./docs/useTitle.md) — sets title of the page. + - [`usePermission`](./docs/usePermission.md) — query permission from the user depends on the specific API.

- [**Lifecycles**](./docs/Lifecycles.md) diff --git a/docs/usePermission.md b/docs/usePermission.md index 4a6b688e5b..cc793240f2 100644 --- a/docs/usePermission.md +++ b/docs/usePermission.md @@ -1,6 +1,6 @@ # `usePermission` -React UI hook that query permission status from the user depends on the specific AP. +React side-effect hook that query permission status from the user depends on the specific API. ## Usage diff --git a/src/__stories__/usePermission.story.tsx b/src/__stories__/usePermission.story.tsx index 3ff7cf6c9a..77e21ca2f5 100644 --- a/src/__stories__/usePermission.story.tsx +++ b/src/__stories__/usePermission.story.tsx @@ -9,6 +9,6 @@ const Demo = () => { return
{JSON.stringify(state, null, 2)}
; }; -storiesOf('UI|usePermission', module) +storiesOf('Side effects|usePermission', module) .add('Docs', () => ) .add('Demo', () => ); diff --git a/src/usePermission.ts b/src/usePermission.ts index 37b0261031..2a08d7b1c9 100644 --- a/src/usePermission.ts +++ b/src/usePermission.ts @@ -7,13 +7,16 @@ type PermissionDesc = | MidiPermissionDescriptor | PushPermissionDescriptor; +type State = PermissionState | ''; + const noop = () => {}; -const usePermission = (permissionDesc: PermissionDesc): string => { - const [state, setState] = useState(''); +const usePermission = (permissionDesc: PermissionDesc): State => { let mounted = true; let permissionStatus: PermissionStatus | null = null; + const [state, setState] = useState(''); + const onChange = () => { if (mounted && permissionStatus) { setState(permissionStatus.state);