diff --git a/src/components/sidebar/index.tsx b/src/components/sidebar/index.tsx index 8da81dc..56c3b72 100644 --- a/src/components/sidebar/index.tsx +++ b/src/components/sidebar/index.tsx @@ -363,4 +363,4 @@ const getIconComponent = (iconName: string) => { } }; -export default Sidebar; +export default Sidebar; \ No newline at end of file diff --git a/src/config/firebase.ts b/src/config/firebase.ts index 82a76ec..8306e29 100644 --- a/src/config/firebase.ts +++ b/src/config/firebase.ts @@ -11,17 +11,25 @@ const firebaseConfig = { measurementId: String(process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID), }; -let app; +let app: any; let messaging: any; export const initializeFirebase = () => { if (typeof window !== 'undefined' && !getApps().length) { app = initializeApp(firebaseConfig); - messaging = typeof window !== 'undefined' ? getMessaging(app) : null; + messaging = getMessaging(app); + console.log('Firebase initialized'); + } else { + console.log('Firebase already initialized or running on the server'); } }; export const requestForToken = async () => { + if (!messaging) { + console.error('Firebase is not initialized. Please initialize Firebase first.'); + return null; + } + if (typeof window !== 'undefined' && 'serviceWorker' in navigator) { try { const currentToken = await getToken(messaging, { @@ -31,21 +39,31 @@ export const requestForToken = async () => { return currentToken; } else { console.log('No registration token available. Request permission to generate one.'); + return null; } } catch (err) { - console.log('An error occurred while retrieving token:', err); + console.error('An error occurred while retrieving token:', err); + return null; } + } else { + console.error('Service Worker is not supported in this browser.'); + return null; } - return null; }; export const onMessageListener = () => { - if (typeof window !== 'undefined') { - return new Promise((resolve) => { + if (!messaging) { + console.error('Firebase is not initialized. Please initialize Firebase first.'); + return Promise.reject('Firebase not initialized'); + } + + return new Promise((resolve) => { + if (typeof window !== 'undefined') { onMessage(messaging, (payload) => { resolve(payload); }); - }); - } - return Promise.resolve(null); + } else { + resolve(null); + } + }); }; diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index cd0fa6a..d801f35 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -47,41 +47,47 @@ const App = ({ Component, pageProps }: AppProps) => { }; useEffect(() => { - if (!sessionStorage.getItem('sessionId')) { - sessionStorage.setItem('sessionId', uuidv4()); - } - const firebaseConfig = encodeURIComponent( - JSON.stringify({ - apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY, - authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, - projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID, - storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET, - messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID, - appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID, - measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID, - }) - ); + if (isAuthenticated) { + + if (!sessionStorage.getItem('sessionId')) { + sessionStorage.setItem('sessionId', uuidv4()); + } + + initializeFirebase(); + getToken(); - if ('serviceWorker' in navigator) { - navigator.serviceWorker - .register(`/firebase-messaging-sw.js?firebaseConfig=${firebaseConfig}`) - .then((registration) => { - console.log('Service Worker registered with scope:', registration.scope); + const firebaseConfig = encodeURIComponent( + JSON.stringify({ + apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY, + authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, + projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID, + storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET, + messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID, + appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID, + measurementId: process.env.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID, }) - .catch((err) => { - console.error('Service Worker registration failed:', err); - }); + ); + + if ('serviceWorker' in navigator) { + navigator.serviceWorker + .register(`/firebase-messaging-sw.js?firebaseConfig=${firebaseConfig}`) + .then((registration) => { + console.log('Service Worker registered with scope:', registration.scope); + }) + .catch((err) => { + console.error('Service Worker registration failed:', err); + }); + } } - initializeFirebase(); - getToken(); - }, []); + }, [isAuthenticated]); - if (typeof window !== 'undefined') { + if (typeof window !== 'undefined') { window.updateFCMToken = (param: string) => { console.log('updateFCMToken called'); return 'updateFCMToken called' + param; // TODO: save this token for this user }; + window.updateNotificationPayload = (stringifiedPayload: string) => { console.log('updateNotificationPayload called with param', stringifiedPayload); const payload = JSON.parse(stringifiedPayload);