vojo/src/app/hooks/usePermission.ts
Ajay Bura 4539c1e6e2 Fix unread reset and notification settings (#1824)
* reset unread with client sync state change

* fix notification toggle setting not working

* revert formatOnSave vscode setting
2024-07-23 15:14:32 +10:00

30 lines
No EOL
926 B
TypeScript

import { useEffect, useState } from "react";
export function usePermissionState(name: PermissionName, initialValue: PermissionState = 'prompt') {
const [permissionState, setPermissionState] = useState<PermissionState>(initialValue);
useEffect(() => {
let permissionStatus: PermissionStatus;
function handlePermissionChange(this: PermissionStatus) {
setPermissionState(this.state);
}
navigator.permissions
.query({ name })
.then((permStatus: PermissionStatus) => {
permissionStatus = permStatus;
handlePermissionChange.apply(permStatus);
permStatus.addEventListener("change", handlePermissionChange);
})
.catch(() => {
// Silence error since FF doesn't support microphone permission
});
return () => {
permissionStatus?.removeEventListener("change", handlePermissionChange);
};
}, [name]);
return permissionState;
}