fix(firebase): add null checks for service worker registration and token
- Add guard clause in useNotificationToken to skip setting state if token is empty - Add check for navigator.serviceWorker support in initServiceWorker - Handle service worker registration failure in getFirebaseToken by returning empty string - Prevents errors and invalid states when Service Worker is unsupported or fails to initialize
This commit is contained in:
parent
defd95c218
commit
5c885eb3fa
@ -8,6 +8,7 @@ export const useNotificationToken = () => {
|
|||||||
if (!isNotificationSupport()) return;
|
if (!isNotificationSupport()) return;
|
||||||
getFirebaseToken()
|
getFirebaseToken()
|
||||||
.then(token => {
|
.then(token => {
|
||||||
|
if (!token) return;
|
||||||
setToken(token);
|
setToken(token);
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
|
|||||||
@ -20,9 +20,9 @@ export const getFirebaseApp = () => {
|
|||||||
}
|
}
|
||||||
return firebase.app;
|
return firebase.app;
|
||||||
};
|
};
|
||||||
// getAnalytics(app);
|
|
||||||
|
|
||||||
export const initServiceWorker = async () => {
|
export const initServiceWorker = async () => {
|
||||||
|
if (!navigator.serviceWorker) return;
|
||||||
if (!firebase.registeration) {
|
if (!firebase.registeration) {
|
||||||
firebase.registeration = await navigator.serviceWorker.register('/sw.js', {
|
firebase.registeration = await navigator.serviceWorker.register('/sw.js', {
|
||||||
scope: '/',
|
scope: '/',
|
||||||
@ -41,6 +41,7 @@ export const getFirebaseMessaging = () => {
|
|||||||
|
|
||||||
export async function getFirebaseToken() {
|
export async function getFirebaseToken() {
|
||||||
const registeration = await initServiceWorker();
|
const registeration = await initServiceWorker();
|
||||||
|
if (!registeration) return '';
|
||||||
await registeration.update();
|
await registeration.update();
|
||||||
const token = await getToken(getFirebaseMessaging(), {
|
const token = await getToken(getFirebaseMessaging(), {
|
||||||
vapidKey: VAPI_PUBLIC_KEY,
|
vapidKey: VAPI_PUBLIC_KEY,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user