import React, { useState } from "react"; import usersService from "../../../services/UsersService"; import Icons from "../../Helpers/Icons"; import InputCom from "../../Helpers/Inputs/InputCom"; import LoadingSpinner from "../../Spinners/LoadingSpinner"; import AddFundDollars from "./AddFundDollars"; function AddFundPop({ _payment, input, setInput, onClose, confirmCredit, setConfirmCredit, walletItem, }) { const apiCall = new usersService(); let countryWallet = walletItem?.country; const { currency } = _payment; const [inputError, setInputError] = useState(""); let __awaitComponent = confirmCredit.show.awaitConfirm; const handleChange = ({ target: { name, value } }) => { setInput(value); }; const handleSubmit = async () => { try { // Clear any previous input error and set the loading spinner to be shown setInputError(""); setConfirmCredit((prev) => ({ ...prev, show: { awaitConfirm: { loader: true } }, })); // Perform validation checks on the input amount if (!input || input === "0") { // Handle input validation error setConfirmCredit((prev) => ({ ...prev, show: { awaitConfirm: { loader: false } }, })); setInputError("Please Enter Amount"); setTimeout(() => setInputError(""), 5000); return; } if (Number(input) * 100 > Number(walletItem?.transfer_limit)) { // Handle credit limit exceeded error setConfirmCredit((prev) => ({ ...prev, show: { awaitConfirm: { loader: false } }, })); setInputError("Credit limit has been exceeded"); setTimeout(() => setInputError(""), 5000); return; } if (isNaN(input)) { // Handle invalid input error setConfirmCredit((prev) => ({ ...prev, show: { awaitConfirm: { loader: false } }, })); setInputError("Amount must be a Number"); setTimeout(() => setInputError(""), 5000); return; } // Prepare state data for API call let stateData = { amount: Number(input) * 100, card_uid: "", //added card_uid as empty string currency: walletItem?.code, }; // Make API call to start credit process const res = await apiCall.getStartCredit(stateData); if (res.data.internal_return < 0) { // Handle API error setConfirmCredit((prev) => ({ ...prev, show: { awaitConfirm: { loader: false } }, })); setInputError("An Error Occurred"); setTimeout(() => setInputError(""), 5000); // use commented code when you when to display pop for failed start credit API // setConfirmCredit((prev) => ({ // ...prev, // show: { // awaitConfirm: { loader: false, state: false }, // acceptConfirm: { loader: false, state: true }, // }, // data: {internal_return: -1} // })); return; } // Update state with response data const _response = res.data; stateData.amount = Number(input); stateData.currency = currency; stateData = { ...stateData, ..._response }; setTimeout(() => { setConfirmCredit((prev) => ({ ...prev, show: { awaitConfirm: { loader: false, state: true }, acceptConfirm: { loader: false, state: false }, }, data: stateData, })); }, 1500); } catch (error) { // Handle API call error setConfirmCredit((prev) => ({ ...prev, show: { awaitConfirm: { loader: false } }, })); console.log(error); } }; return (