import styles from './styles.module.scss'; import React, {useEffect, useRef, useState} from "react"; import {reqFirstPayConfig, reqFirstPayMulti, reqGameInfo, reqProtectCheck, reqRechargeConfig} from "@features/api"; import {useDispatch, useSelector} from "react-redux"; import {getFirstBonus, getOpenRelief, getPopBindPhone, getUpgradeBonus, getUserInfo} from "@features/mainSlice"; import {APP_WELFARE} from "@constants/app"; import {getBonusPack, getCurrPayOrder, getFirstPayMulti, getOFirstPay} from "@features/paySlice"; import {getProtectInfo} from "@features/protectSlice"; import {formatCash, formatTime} from "@utils/helpers"; import {useThemeProvider} from "@contexts/themeContext"; import {useSidebar} from "@contexts/sidebarContext"; import {useLocation} from "react-router-dom"; import {ROUTE_PATH} from "@constants/routes"; const i18n=global.i18n; const WelfareBtn=({children,open=false,pressDown=false,...props})=>{ const [bopen,setBopen]=useState(false); const [show,setShow]=useState(false); useEffect(()=>{ if (open){ setShow(true); setTimeout(()=>{ setBopen(true); },100) } else { setBopen(false); setShow(false); } },[open]) return ( <> { show? ( ):(<>) } ) } const WWelfarebar = () => { const dispatch = useDispatch(); const user = useSelector(getUserInfo); //0:1,1:1,2:1 // const [openState, setOpenState] = useState({}); const [openProtect, setOpenProtect] = useState(0); const [openFirst, setOpenFirst] = useState(0); const [openBind, setOpenBind] = useState(0); const firstPayConf = useSelector(getOFirstPay); const popBindPhone=useSelector(getPopBindPhone); const firstBonus=useSelector(getFirstBonus); const openRelief=useSelector(getOpenRelief); const protectInfo=useSelector(getProtectInfo); const orderInfo=useSelector(getCurrPayOrder); const {welfTabState,isMobile}=useThemeProvider(); const {open} = useSidebar(); const {pathname} = useLocation(); const starPRef=useRef(null); const upgradBonus=useSelector(getUpgradeBonus); const regCoins=formatCash(upgradBonus,0); const firstPayMulti=useSelector(getFirstPayMulti); //bonus pack const [openBonusPack, setOpenBonusPack] = useState(0); const bonusPack=useSelector(getBonusPack); const getWelfTabState=(key)=>{ if (welfTabState===key)return true; return false; } const changeNewState=(key,state)=>{ // let newOpenState= Object.assign({},openState); // newOpenState[key]=state; // setOpenState(newOpenState); // state=1; switch (key){ case APP_WELFARE.PROTECT: setOpenProtect(state); break; case APP_WELFARE.FIRST_PAY: setOpenFirst(state); break; case APP_WELFARE.BIND: setOpenBind(state); break; case APP_WELFARE.BONUS_PACK: setOpenBonusPack(state); break; } } const checkProtect=()=>{ let state=0; if (openRelief){ if (protectInfo!=null){ if (user.UserID>0){ // let CurProtectTimes=protectInfo.CurProtectTimes!=null?parseInt(protectInfo.CurProtectTimes):0; // if (CurProtectTimes>0)state=1; state=1; } } } changeNewState(APP_WELFARE.PROTECT,state); } const checkProtectLimit=()=>{ if (protectInfo!=null){ let ProtectLimit=protectInfo.ProtectLimit; if (ProtectLimit!=null){ ProtectLimit=Number(ProtectLimit); ProtectLimit=Number(formatCash(ProtectLimit)) let Score=user.Score; if (Score<=ProtectLimit){ dispatch(reqProtectCheck()); } } } } const checkFirstPay=()=>{ let state=0; if (firstBonus){ // if (user.UserID>0){ // if (firstPayConf!=null)state=1; // } if (firstPayMulti!=null){ state=1; //充值成功弹一下 if (firstPayMulti.pay_sucess){ global.showFirstPay(); } } } changeNewState(APP_WELFARE.FIRST_PAY,state); } const checkFirstPayStatus=()=>{ if (orderInfo!=null){ if (orderInfo.status==="success"){ // dispatch(reqFirstPayConfig()); //pay_success dispatch(reqFirstPayMulti(1)); } } } const checkBind=()=>{ let state=0; if (popBindPhone){ let bonus=Number(upgradBonus); if (user.UserID>0&&bonus>0){ if (user.Phone==null||user.Phone===""){ state=1; } } } changeNewState(APP_WELFARE.BIND,state); } const getSymbol=()=>{ let symbols=['$','€','₽','M$','R$']; let dollar=global.DOLLAR; if (symbols.indexOf(dollar)===-1)dollar=symbols[0]; return dollar; } const getFirstCD=()=>{ let timeleft=-1; if (firstPayMulti!=null&&firstPayMulti.leftitem!=null){ timeleft=Number(firstPayMulti.leftitem.timeleft); } return timeleft; } const formatFirstCD=(firstCD)=>{ let cdStr=formatTime(firstCD); cdStr=cdStr.substring(0,cdStr.length-3); return cdStr; } //bonus pack const checkBonusPack=()=>{ let state=0; if (bonusPack&&bonusPack.timeleft>0){ state=1; } changeNewState(APP_WELFARE.BONUS_PACK,state); } const getBonusPackCD=()=>{ let timeleft=-1; if (bonusPack!=null){ timeleft=Number(bonusPack.timeleft); } return timeleft; } const formatBonusPackCD=(bonusCD)=>{ let cdStr=formatTime(bonusCD); cdStr=cdStr.substring(0,cdStr.length-3); return cdStr; } useEffect(()=>{ let UserID=user.UserID; if (UserID>0){ dispatch(reqProtectCheck()); // dispatch(reqGameInfo()); } dispatch(reqRechargeConfig()); // dispatch(reqFirstPayConfig()); dispatch(reqFirstPayMulti()); },[user.UserID]); useEffect(() => { checkProtectLimit(); }, [user.Score]); // useEffect(()=>{ // checkFirstPay(); // },[firstPayConf]); useEffect(()=>{ checkFirstPay(); },[firstPayMulti]); useEffect(()=>{ checkBind(); },[popBindPhone,user.Phone]); useEffect(()=>{ checkProtect(); },[protectInfo]) useEffect(()=>{ checkFirstPayStatus(); },[orderInfo]) //bonus pack useEffect(()=>{ checkBonusPack(); },[bonusPack]) const renderBar=()=>{ let extra=''; if (!isMobile()){ if (open)extra='sidebar-open'; else extra='sidebar-close'; } let isClose=false; if (pathname.startsWith(ROUTE_PATH.SPORTS)){ isClose=true; } else if(pathname.startsWith(ROUTE_PATH.RACING)){ isClose=true; } const stars=Array.from({ length: 5 }, (_, index) => index); let symbol=getSymbol(); let firstCD=getFirstCD(); let bonusCD=getBonusPackCD(); return (
{ global.showProtectReward(); }}>
{/**/}
{ stars.map((item,index)=>{ return (
) }) }
{ global.showFirstPay(); }}>
{ firstCD<=0? (): ( {formatFirstCD(firstCD)} ) }
{ global.showBindPhone(); }}>
{/**/}
{regCoins}
{ global.showBonusPack(); }}>
{formatBonusPackCD(bonusCD)}
) } return ( <> {renderBar()} ) } export default WWelfarebar;