import { useMutation, useQuery } from "@apollo/client"; import React from "react"; import { logImEXEvent } from "../../firebase/firebase.utils"; import { QUERY_ALL_ASSOCIATIONS, UPDATE_ACTIVE_ASSOCIATION, } from "../../graphql/associations.queries"; import AlertComponent from "../alert/alert.component"; import ProfileShopsComponent from "./profile-shops.component"; import axios from "axios"; import { messaging } from "../../firebase/firebase.utils"; import { getToken } from "firebase/messaging"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { selectBodyshop, selectCurrentUser, } from "../../redux/user/user.selectors"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, currentUser: selectCurrentUser, }); const mapDispatchToProps = (dispatch) => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export default connect( mapStateToProps, mapDispatchToProps )(ProfileShopsContainer); export function ProfileShopsContainer({ bodyshop, currentUser }) { const { loading, error, data } = useQuery(QUERY_ALL_ASSOCIATIONS, { fetchPolicy: "network-only", nextFetchPolicy: "network-only", variables: { email: currentUser.email, }, skip: !currentUser, }); const [updateActiveAssociation] = useMutation(UPDATE_ACTIVE_ASSOCIATION); const updateActiveShop = async (newActiveAssocId) => { logImEXEvent("profile_change_active_shop"); try { const fcm_tokens = await getToken(messaging); await axios.post("/notifications/unsubscribe", { fcm_tokens, imexshopid: bodyshop.imexshopid, type: "messaging", }); } catch (error) { console.log("No FCM token. Skipping unsubscribe."); } await updateActiveAssociation({ variables: { newActiveAssocId: newActiveAssocId, }, }); //Force window refresh. window.location.reload(); }; if (error) return ; return ( ); }