import { getAnalytics, logEvent } from "firebase/analytics"; import { initializeApp } from "firebase/app"; import { getAuth, updatePassword, updateProfile } from "firebase/auth"; import { getFirestore } from "firebase/firestore"; import { tracker } from "../App/App.container"; //import { getMessaging } from "firebase/messaging"; import { store } from "../redux/store"; const config = JSON.parse(process.env.REACT_APP_FIREBASE_CONFIG); initializeApp(config); export const auth = getAuth(); export const firestore = getFirestore(); export const analytics = getAnalytics(); //export default firebase; export const getCurrentUser = () => { return new Promise((resolve, reject) => { const unsubscribe = auth.onAuthStateChanged((userAuth) => { unsubscribe(); resolve(userAuth); }, reject); }); }; export const updateCurrentUser = (userDetails) => { return new Promise((resolve, reject) => { const unsubscribe = auth.onAuthStateChanged((userAuth) => { updateProfile(userAuth, userDetails).then((r) => { unsubscribe(); resolve(userAuth); }); }, reject); }); }; export const updateCurrentPassword = async (password) => { const currentUser = await getCurrentUser(); return updatePassword(currentUser, password); }; //let messaging; // try { // messaging = getMessaging(); // // Project Settings => Cloud Messaging => Web Push certificates // messaging.usePublicVapidKey(process.env.REACT_APP_FIREBASE_PUBLIC_VAPID_KEY); // console.log("[FCM UTIL] FCM initialized successfully."); // } catch { // console.log("[FCM UTIL] Firebase Messaging is likely unsupported."); // } // export { messaging }; export const logImEXEvent = (eventName, additionalParams, stateProp = null) => { const state = stateProp || store.getState(); const eventParams = { shop: (state.user && state.user.bodyshop && state.user.bodyshop.shopname) || null, user: (state.user && state.user.currentUser && state.user.currentUser.email) || null, ...additionalParams, }; // console.log( // "%c[Analytics]", // "background-color: green ;font-weight:bold;", // eventName, // eventParams // ); logEvent(analytics, eventName, eventParams); //Log event to OpenReplay server. tracker.event(eventName, eventParams); }; // if (messaging) { // onMessage(async (payload) => { // console.log("[FCM] UTILS Message received. ", payload); // navigator.serviceWorker.getRegistration().then((registration) => { // return registration.showNotification( // "[UTIL]" + payload.notification.title, // payload.notification // ); // }); // // if (!payload.clientId) return; // // // Get the client. // // const client = await clients.get(payload.clientId); // // // Exit early if we don't get the client. // // // Eg, if it closed. // // if (!client) return; // // // Send a message to the client. // // console.log("Posting to client."); // // client.postMessage({ // // msg: "Hey I just got a fetch from you!", // // url: payload.request.url, // // }); // // [START_EXCLUDE] // // Update the UI to include the received message. // //appendMessage(payload); // // [END_EXCLUDE] // }); // messaging.onTokenRefresh(() => { // messaging // .getToken() // .then((refreshedToken) => { // console.log("[FCM] Token refreshed."); // // Indicate that the new Instance ID token has not yet been sent to the // // app server. // // setTokenSentToServer(false); // // // Send Instance ID token to app server. // // sendTokenToServer(refreshedToken); // // // [START_EXCLUDE] // // // Display new Instance ID token and clear UI of all previous messages. // // resetUI(); // // [END_EXCLUDE] // }) // .catch((err) => { // console.log("[FCM] Unable to retrieve refreshed token ", err); // // showToken("Unable to retrieve refreshed token ", err); // }); // }); // }