fix notification crash on ios (#2192)

* fix notification crash for ios

* access notification from window variable

* fix Notification check

* catch notification variable error

* fix missing check for Notification
This commit is contained in:
Ajay Bura 2025-02-10 21:02:33 +11:00 committed by GitHub
parent 5460e4922b
commit b12228ee95
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 31 additions and 14 deletions

View file

@ -1,4 +1,16 @@
import { useEffect, useState } from "react";
import { useEffect, useState } from 'react';
export const getNotificationState = (): PermissionState => {
if ('Notification' in window) {
if (window.Notification.permission === 'default') {
return 'prompt';
}
return window.Notification.permission;
}
return 'denied';
};
export function usePermissionState(name: PermissionName, initialValue: PermissionState = 'prompt') {
const [permissionState, setPermissionState] = useState<PermissionState>(initialValue);
@ -15,16 +27,16 @@ export function usePermissionState(name: PermissionName, initialValue: Permissio
.then((permStatus: PermissionStatus) => {
permissionStatus = permStatus;
handlePermissionChange.apply(permStatus);
permStatus.addEventListener("change", handlePermissionChange);
permStatus.addEventListener('change', handlePermissionChange);
})
.catch(() => {
// Silence error since FF doesn't support microphone permission
});
return () => {
permissionStatus?.removeEventListener("change", handlePermissionChange);
permissionStatus?.removeEventListener('change', handlePermissionChange);
};
}, [name]);
return permissionState;
}
}