import { isEmpty } from "lodash"; import React, { useContext, useEffect, useState } from "react"; import { Link, useLocation } from "react-router-dom"; import AuthProvider from "../context/AuthContext"; import io from "socket.io-client"; import { apiGet, apiPost } from "../Utils/apiFetch"; import apiPath from "../Utils/apiPath"; import obj from "../Utils/helpers"; import MessageBox from "./MessageBox"; import WalletWrap from "./WalletWrap"; import BetSlipContext from "../context/BetSlipContext"; const Header = () => { let { user, user_coins, logoutUser, setOpenBetsToogle, setSettingToogle, setIsTv, setAnnouncmentToogle, isTv, setWalletOpen, walletOpen, } = useContext(AuthProvider); const location = useLocation(); let { betLoader, unMatchedBets, setRefreshCurrentBets, balanceRefresh, setBalanceRefresh } = useContext(BetSlipContext); const [refresh, setRefresh] = useState(false); const [loader, setLoader] = useState(false); const [loader1, setLoader1] = useState(false); // Synchronize local balance state with user_coins from AuthContext const [balance, setBalance] = useState({ totalCoins: user_coins?.totalCoins || 0, exposure: user_coins?.exposure || 0 }); // Update local balance when user_coins changes // useEffect(() => { // setBalance({ // totalCoins: user_coins?.totalCoins || 0, // exposure: user_coins?.exposure || 0 // }); // }, [user_coins]); const refreshAmount = () => { setRefresh(true); const newSocket = io( `${import.meta.env.VITE_API_BASE_URL_OLD}?token=${localStorage.getItem( "token" )}&userType=front`, { transports: ["websocket"], } ); const coinListener = (message) => { setBalance({ totalCoins: message.results.totalCoins, exposure: message.results.exposure }); setRefresh(false); }; const forceLogout = (message) => { const uniqueId = localStorage.getItem("uniqueId"); if (uniqueId !== message.results.uniqueId) { logoutUser(); } }; newSocket.emit("getCoins", { user_id: user ? user.user._id : "" }); newSocket.on("listenGetCoin", coinListener); newSocket.on("listenForceLogout", forceLogout); return () => newSocket.close(); }; const recallCasinoAmount = async (event) => { if (!isEmpty(user)) { setLoader(true); try { const { status, data: response_users } = await apiPost( apiPath.withdrawCasinoAmount, { amount: casionData ? casionData : user_coins?.casinoCoins } ); if (status === 200) { if (response_users.status) { if (response_users.data.status === "0000") { setLoader(false); mainBalanceClick(); } else { setLoader(false); } } else { setLoader(false); } } } catch (err) { setLoader(false); } } }; const recallEgtCasinoAmount = async (event) => { if (!isEmpty(user)) { setLoader1(true); try { const { status, data: response_users } = await apiPost( apiPath.withdrawEgtCasinoAmount, { amount: 0 } ); if (status === 200) { if (response_users.status) { setLoader1(false); mainEgBalanceClick(); getCoins(); } else { setLoader1(false); } } } catch (err) { setLoader1(false); } } }; const [casionData, setCasinoData] = useState(0); const [egtCasionData, setEgtCasionData] = useState(0); const mainBalanceClick = async () => { let { status, data: response_users } = await apiPost(apiPath.awcBalance); if (status === 200) { if (!isEmpty(response_users.data)) { setCasinoData(response_users.data.balance); } } }; const mainEgBalanceClick = async () => { let { status: status1, data: response_users1 } = await apiPost( apiPath.egtBalance ); if (status1 === 200) { if (!isEmpty(response_users1.data)) { setEgtCasionData(response_users1.data.balance); } } }; // const getCoins = async () => { // if (!isEmpty(user)) { // const { status, data } = await apiGet(apiPath.refreshAmount); // if (status === 200) { // if (data.success) { // setBalance({ // totalCoins: data?.results?.totalCoins, // exposure: data?.results?.exposure // }); // } // } // } // }; const getCoins = async () => { if (!isEmpty(user)) { setRefresh(true); try { const { status, data } = await apiGet(apiPath.refreshAmount); if (status === 200 && data?.success) { setBalance({ totalCoins: data?.results?.totalCoins, exposure: data?.results?.exposure, }); } } finally { setRefresh(false); } } }; useEffect(() => { if (!isEmpty(user)) { getCoins(); mainBalanceClick(); mainEgBalanceClick(); } }, [user]); useEffect(() => { if (balanceRefresh) { getCoins(); setBalanceRefresh(false); } }, [balanceRefresh]); const [message, setMessage] = useState([]); const messageList = async () => { let hostname = window.location.hostname; hostname = hostname.replace(/^www\./, ""); hostname = hostname.replace(/^ag\./, ""); hostname = hostname || "sabaexch.com"; const { status, data: response_users } = await apiGet( apiPath.messageList + "?domain=" + hostname ); if (status === 200) { if (response_users.success) { setMessage(response_users.results); } } }; useEffect(() => { messageList(); }, []); return ( <> {!isEmpty(user) && (
)} {isEmpty(user) && (

Login Register

Back England{" "} $1,000 at odds{" "} 1.29

Close
Main Balance
PBU $ 0.00
Exposure $ 0.00
Housie Balance
PBU $ 0.00
)} {!isEmpty(user) && (

News

{ setAnnouncmentToogle(message.length > 0 ? true : false); }} >
{message?.length > 0 && message?.map((item) => { return ( {obj.msgDateFormat(item.msgDate)} {item.message} ); })}
)} ); }; export default Header;