import { FC, Fragment, useState } from 'react' import { useTranslation } from 'react-i18next' import Input from '../../../components/Input' import UploadBox from '../../../components/UploadBox' import Button from '../../../components/Button' import { useDepositTransfer, useGetBankAccount } from '../hooks/useWalletData' import Select from '../../../components/Select' import PageLoading from '../../../components/PageLoading' import { useFormik } from 'formik' import { DepositTransferType } from '../types/WalletTypes' import * as Yup from 'yup' import { useSingleUpload } from '../../ticket/hooks/useTicketData' import { toast } from 'react-toastify' import { ErrorType } from '../../../helpers/types' import { TickCircle } from 'iconsax-react' const CardtoCard: FC = () => { const { t } = useTranslation('global') const [file, setFile] = useState() const [percent, setPercent] = useState(0) const getBankAccount = useGetBankAccount() const depositTransfer = useDepositTransfer() const upload = useSingleUpload(setPercent) const formik = useFormik({ initialValues: { amount: 0, transferReceiptUrl: '', bankAccountId: '', method: 'CARD_TO_CARD' }, validationSchema: Yup.object({ amount: Yup.number().required(t('errors.required')), bankAccountId: Yup.string().required(t('errors.required')), }), onSubmit: (values) => { if (file) { const formData = new FormData() formData.append('file', file) upload.mutate(formData, { onSuccess: (data) => { depositTransfer.mutate({ ...values, amount: +values.amount, transferReceiptUrl: data.data.url }, { onSuccess: () => { formik.resetForm() setFile(undefined) toast.success(t('wallet.successful_transfer')) }, onError: (error: ErrorType) => { toast.error(error.response?.data?.error.message[0]) } }) } }) } } }) return (
{ getBankAccount.isPending ? :
{t('wallet.card_to_card')}
formik.setFieldValue('amount', e.target.value)} error_text={formik.touched.amount && formik.errors.amount ? formik.errors.amount : ''} seprator />
setFile(file[0])} />
}
) } export default CardtoCard