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:
kyuuseiryuu 2026-03-27 21:30:42 +09:00
parent defd95c218
commit 5c885eb3fa
2 changed files with 3 additions and 1 deletions

View File

@ -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(() => {});

View File

@ -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,