130 lines
3.9 KiB
JavaScript
130 lines
3.9 KiB
JavaScript
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);
|
|
// });
|
|
// });
|
|
// }
|