import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import InputCom from "../../Helpers/Inputs/InputCom"; import ModalCom from "../../Helpers/ModalCom"; import LoadingSpinner from "../../Spinners/LoadingSpinner"; import usersService from "../../../services/UsersService"; import { Form, Formik } from "formik"; import * as Yup from "yup"; const validationSchema = Yup.object().shape({ amount: Yup.number() .typeError("you must specify a number") .min(1, "Amount must be greater than 0") .required("Amount is required"), recipientID: Yup.string() .min(1, "Minimum 1 characters") .max(50, "Maximum 50 characters") .required("Recipient is required"), }); const initialValues = { amount: "", recipientID: "", comment: "", }; function NairaWithdraw({ wallet, action, situation, setShowConfirmNairaWithdraw, }) { const apiCall = new usersService(); // API CLASS CALL const navigate = useNavigate(); const [tab, setTab] = useState("previous"); let [requestStatus, setRequestStatus] = useState(false); let [recipients, setRecipients] = useState({ // FOR COUPON HISTORY loading: true, data: [], error: false, }); let [sendMoneyFee, setSendMoneyFee] = useState({ loading: false, fee: 0, total: 0, }); // HOLD THE VALUE FOR walletSEND MONEY FEE //FUNCTION TO GET RECIPIENT LIST const getRecipients = () => { apiCall .getRecipient() .then((res) => { if (res.data.internal_return < 0) { // success but no data setRecipients((prev) => ({ ...prev, loading: false })); return; } setRecipients((prev) => ({ ...prev, loading: false, data: res.data.result_list, })); }) .catch((error) => { setRecipients((prev) => ({ ...prev, loading: false, error: true })); }); }; //FUNCTION TO GET SEND MONEY FEE const getSendMoneyFee = ({ target: { value } }) => { setSendMoneyFee({ loading: true, fee: 0, total: 0 }); let amount = value; if (Number(amount) <= 0 || amount == "" || isNaN(amount)) { setSendMoneyFee({ loading: false, fee: 0, total: 0 }); return; } apiCall .getSendMoneyFee(Number(amount * 100)) .then((res) => { setSendMoneyFee({ loading: false, fee: res.data.processing_fee, total: res.data.total_amount, }); }) .catch((error) => { setSendMoneyFee({ loading: false, fee: 0, total: 0 }); }); }; console.log("TESTING", sendMoneyFee); //FUNCTION TO HANDLE SUBMIT const handleSubmit = (values, helpers) => { if (!values?.amount && !values.recipientID) return; setRequestStatus(true); let recipientDetails = recipients.data?.filter( (item) => item.recipient_id == values.recipientID ); let stateData = { ...values, ...sendMoneyFee, details: { ...recipientDetails[0] }, }; setTimeout(() => { setRequestStatus(false); // navigate("confirm-withdraw-naira", { state: stateData }); action(); setShowConfirmNairaWithdraw({ show: true, state: stateData }); }, 1000); }; useEffect(() => { getRecipients(); }, []); return (
{(props) => { return (

{`Withdraw from ${wallet.description} Wallet : ${ wallet.symbol }${(wallet.amount * 0.01).toFixed(2)}`}

{/* Amount Form */}
{ getSendMoneyFee(e); }} // props.handleBlur // onMouseLeave={(e)=>{getSendMoneyFee(e)}} /> {props.errors.amount && props.touched.amount && (

{props.errors.amount}

)}