import styles from "./styles.module.scss"; import WWheel from "@widgets/WCashWheel/WWheel/WWheel"; import Spring from "@components/Spring"; import cash_2 from "@assets/wheel/cash_2.png"; import coin from "@assets/wheel/pix_2.png"; import {useDispatch, useSelector} from "react-redux"; import {getBonusStatus, getMyRecord, getRecord, getTurnplate} from "@features/turnplateSlice"; import {formatCash, stringFormat} from "@utils/helpers"; import React, {useEffect, useState} from "react"; import {Autoplay, EffectCube,EffectCoverflow} from "swiper"; import {Swiper, SwiperSlide} from "swiper/react"; import styled from 'styled-components/macro'; import CountUp from "react-countup"; import Popup from "@components/Popup"; import WShare from "@widgets/WCashWheel/WShare/WShare"; import {isLogined} from "@features/mainSlice"; import {useNavigate} from "react-router"; import {ROUTE_PATH} from "@constants/routes"; import SmallLoading from "@components/SmallLoading"; import WRetainPop from "@widgets/WCashWheel/WRetainPop/WRetainPop"; import {reqTurnplateBonus} from "@features/api"; import {REQ_STATUS} from "@api/config"; const i18n=global.i18n; const StyledSwiper=styled(Swiper)` .swiper-wrapper{ transition-timing-function: cubic-bezier(1.00, 1.00, 0.00, 0.00); } ` const WCashWheel=({close})=>{ let turnplate=useSelector(getTurnplate); // if(turnplate==null)turnplate={collect_amount:0,total_amount:10000}; const record=useSelector(getRecord); const myrecord=useSelector(getMyRecord); const [recordIndex,setRecordIndex]=useState(0); const recordLog=[record,myrecord]; const [swiper, setSwiper] = useState(null); const [openInfoBox,setOpenInfoBox]=useState(false); const [openShare,setOpenShare]=useState(false); const isLogin=useSelector(isLogined); const navigate=useNavigate(); const dispatch = useDispatch(); const bonusStatus=useSelector(getBonusStatus); useEffect(() => { if (swiper) { swiper.update(); } }, [swiper]); useEffect(()=>{ },[recordIndex]) const formatPhone=(phone)=>{ let tstr=phone.substring(1,phone.length-2); phone=phone.replace(tstr,'*'.repeat(tstr.length)); if (!phone.startsWith("55"))phone="55"+phone; return phone; } const checkClickWD=()=>{ let collect=turnplate.collect_amount; let total=turnplate.total_amount; if (collect>=total){ if (bonusStatus!==REQ_STATUS.LOADING){ dispatch(reqTurnplateBonus()); } } else { setOpenInfoBox(true); } } const renderCashMain=()=>{ let collect=turnplate.collect_amount; // collect=10000; let total=turnplate.total_amount; let left=total-collect; let isEnableCash=collect>0; let progress=((collect/total)*100).toFixed(2); return (
{({ countUpRef, start }) => { if (countUpRef.current){ let current=countUpRef.current; if (current.value!==collect){ start(); current.value=collect; } } return (
) }} {/*
{global.DOLLAR+" "+formatCash(collect)}
*/}
{progress+"%"}
{i18n.t("turnplate.need_tip")}
{formatCash(left)}
{i18n.t("turnplate.need_tip_1")}
) } const renderRecord=()=>{ let list=recordLog[recordIndex]; return (
{ list==null||list.length===0?(<>):( { list.map((item,index)=>{ let phone=formatPhone(item.phone); let name=item.name; let amount=item.amount; return (
{phone}
{name}
{"+"+amount}
{global.DOLLAR}
) }) }
) }
) } const renderHelp=()=>{ let arr=Array.from({ length: 6 }, (_, index) => index+1); return (
{i18n.t("turnplate.rule.title")}
{ arr.map((item,index)=>{ return (
{i18n.t("turnplate.rule.rule_"+item)}
) }) }
) } const renderInfoBox=()=>{ let collect=turnplate.collect_amount; // collect=9556; let total=turnplate.total_amount; let left=total-collect; return ( { setOpenInfoBox(false); }}>
{i18n.t("turnplate.info_box.title")}
{i18n.t("turnplate.info_box.tips")}
{({ countUpRef, start }) => { return (
{ countUpRef.current=ref; if (openInfoBox)start(); }} className={styles.cash}/> ) }}
{i18n.t("turnplate.info_box.step_title")}
0?styles.active:''}`}>{i18n.t("turnplate.info_box.step_0")}
0?styles.active:''}`}>{stringFormat(i18n.t("turnplate.info_box.step_1"),[formatCash(left)])}
=total?styles.active:''}`}>{stringFormat(i18n.t("turnplate.info_box.step_2"),[formatCash(total,0)])}
) } const renderShare=()=>{ return ( { setOpenShare(false); }}> ) } const checkOpenShare=()=>{ if (!isLogin){ navigate(ROUTE_PATH.SIGN_IN); return; } setOpenShare(true); } const renderMain=()=>{ return ( {renderCashMain()} {renderRecord()} {renderHelp()} {renderInfoBox()} {renderShare()} ) } return (
{ turnplate==null?():(renderMain()) }
) } export default WCashWheel;