import firebase from "firebase/app"; import "firebase/firestore"; import "firebase/auth"; import "firebase/database"; //import "firebase/analytics"; //import "firebase/messaging"; import { store } from "../redux/store"; //const config = JSON.parse(process.env.REACT_APP_FIREBASE_CONFIG); const config = { apiKey: "AIzaSyDPLT8GiDHDR1R4nI66Qi0BY1aYviDPioc", authDomain: "imex-dev.firebaseapp.com", databaseURL: "https://imex-dev.firebaseio.com", projectId: "imex-dev", storageBucket: "imex-dev.appspot.com", messagingSenderId: "759548147434", appId: "1:759548147434:web:e8239868a48ceb36700993", measurementId: "G-K5XRBVVB4S", }; if (!firebase.apps.length) { firebase.initializeApp(config); } export const auth = firebase.auth(); export const firestore = firebase.firestore(); //export const analytics = firebase.analytics(); 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) => { userAuth.updateProfile(userDetails).then((r) => { unsubscribe(); resolve(userAuth); }); }, reject); }); }; // let messaging; // try { // messaging = firebase.messaging(); // // 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, }; analytics.logEvent(eventName, eventParams); }; // if (messaging) { // 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); // }); // }); // }