import Spring from "@components/Spring"; import styles from "./styles.module.scss"; import React, {useState,useEffect} from "react"; import {useDispatch, useSelector} from "react-redux"; import {getUserInfo} from "@features/mainSlice"; import {formatCash, numFormatter, stringFormat} from "@utils/helpers"; import {getWDPayoutStatus, getWithdrawBaseInfo} from "@features/paySlice"; import symbol from "@assets/symbol-defs.svg"; import {ReactComponent as Edit} from '@assets/singlesvg/edit.svg'; import {useNavigate} from "react-router-dom"; import {ROUTE_PATH} from "@constants/routes"; import WDPassBox from "@widgets/WWithdraw/PassBox/WDPassBox"; import SmallLoading from "@components/SmallLoading"; import {reqWithdrawBaseInfo, reqWithdrawPayout} from "@features/api"; import {REQ_STATUS} from "@api/config"; import {toast} from "react-toastify"; const i18n=global.i18n; const BRWithdraw=()=>{ const user=useSelector(getUserInfo); const info=useSelector(getWithdrawBaseInfo); const navigate=useNavigate(); const addBtnParam = [200, 500, 1000, 2000, 5000, -1]; const [addIndex,setAddIndex]=useState(-1); const [wdValue,setWdValue]=useState(""); const [wdPass,setWdPass]=useState(""); const [openPassBox,setOpenPassBox]=useState(false); const dispatch = useDispatch(); const status=useSelector(getWDPayoutStatus); useEffect(()=>{ if (info==null){ dispatch(reqWithdrawBaseInfo()) } },[]) const checkBank=()=>{ if (info!=null){ // data.BankUserName, data.AccountsBank, data.cbPixType let name=info.BankUserName; let tname=info.AccountsBank; let type=info.type; return ((name != "") || (tname != "")) && (type != 0); } return false; } const onClickPayout=()=>{ if (status===REQ_STATUS.LOADING)return; if (wdValue===""){ toast.error(i18n.t("withdraw.main.score_null")) return; } if (!checkBank()){ toast.error(i18n.t("withdraw.main.unbound_account")) return; } let inputNum = Number(wdValue)*global.CASH_BASE; let lnum = info.OrderLimit - info.OrderCount; // data.WithDrawMin, data.WithDrawMax let min=info.MinExchange; let max=info.MaxExchange; let maxEx=Number(info.SumCanExchange); if (inputNummax){ toast.error(stringFormat(i18n.t("withdraw.tip.over_can_score"),[formatCash(max,0)])) return; } if (inputNum>maxEx){ toast.error(i18n.t("withdraw.tip.total_not_enough")) return; } if (lnum<=0){ return; } let num=Number(wdValue); if (num>0){ dispatch(reqWithdrawPayout({ score:num })) } } const getShowCash=(value)=>{ value=Number(value); return value/global.CASH_BASE; } const formatInput=(text)=>{ let Score=user.Score*global.CASH_BASE; let inputNum = Number(text)*global.CASH_BASE; inputNum = Math.min(inputNum, info.SumCanExchange); inputNum = Math.min(inputNum, Score); return (inputNum > 0) ? (getShowCash(inputNum)) : ""; } const getAddIndexFromValue=(value)=>{ value=Number(value); let index=addBtnParam.indexOf(value); if (index===-1){ if (value===info.CanWithDraw){ index=addBtnParam.length-1; } } return index; } const renderUser=()=>{ return (
{i18n.t("withdraw.main.total_balance")}
{global.DOLLAR+" "+numFormatter(user.Score)}
{i18n.t("withdraw.main.withdrawable")}
{global.DOLLAR+" "+numFormatter(getShowCash(info.SumCanExchange))}
) } const renderWithdrawValue=()=>{ return (
{i18n.t("withdraw.main.editBox")}
{ addBtnParam.map((item,index)=>{ let label=item===-1?i18n.t("withdraw.main.btn_all"):global.DOLLAR+" "+item; return ( ) }) }
{global.DOLLAR}
{ // let value=formatInput(e.target.value); // setWdValue(value); // setAddIndex(getAddIndexFromValue(value)); setWdValue(e.target.value); }} /> { wdValue===""?(<>):( ) }
) } const renderAccount=()=>{ let BankUserName=info.BankUserName; let AccountsBank=info.AccountsBank; let cbPixType=Number(info.PixType); let via=""; let accout=""; if (BankUserName!==""||AccountsBank!==""){ via=cbPixType >= 10 ? "TED" : "PIX"; accout=cbPixType >= 10 ? AccountsBank : BankUserName } return (
{i18n.t("withdraw.account.title")}
{i18n.t("withdraw.main.via")}
{ via===""?(
{i18n.t("withdraw.main.bank_info_isNull")}
):(
{via}
) } {/*
*/}
{i18n.t("withdraw.main.account")}
{ accout===""?(
{i18n.t("withdraw.main.bank_No_isNull")}
):(
{accout}
) } {/*
*/}
) } const renderSubmit=()=>{ let num = info.OrderLimit - info.OrderCount; // data.WithDrawMin, data.WithDrawMax let min=getShowCash(info.MinExchange); let max=getShowCash(info.MaxExchange); return (
{stringFormat(i18n.t("withdraw.main.tip"),[min,max])}
) } const renderPassBox=()=>{ return ( { setOpenPassBox(false); }} onConfirm={(data)=>{ if (data!=null){ setWdPass(data); } }} > ) } return ( <> { info==null?(
):( {renderUser()} {renderWithdrawValue()} {renderAccount()} {renderSubmit()} {renderPassBox()} ) } ) } export default BRWithdraw;