import React, { useEffect, useState } from "react"; import { toast } from "react-toastify"; import usersService from "../../services/UsersService"; import InputCom from "../Helpers/Inputs/InputCom"; import LoadingSpinner from "../Spinners/LoadingSpinner"; import { Form, Formik } from "formik"; import * as Yup from "yup"; import ReferralTable from "../MyWallet/WalletComponent/ReferralTable"; import TabButton from "../customTabs/TabButton"; const validationSchema = Yup.object().shape({ ref_email: Yup.string() .email("Wrong email format") .matches( // /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/, /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/, "Invalid email format" ) .min(3, "Minimum 3 characters") .max(50, "Maximum 50 characters") .required("Email is required"), ref_firstname: Yup.string() .min(3, "Minimum 3 characters") .max(25, "Maximum 25 characters") .required("Firstname is required"), ref_lastname: Yup.string() .min(3, "Minimum 3 characters") .max(25, "Maximum 25 characters") .required("Lastname is required"), }); const initialValues = { ref_firstname: "", ref_lastname: "", ref_email: "", }; function ReferralDisplay() { const apiCall = new usersService(); // GET API CALL let [refHistoryReload, setRefHistoryReload] = useState(false); // Determines when referral history reloads // STATE TO HOLD REFERRAL HISTORY let [referralList, setReferralList] = useState({ loading: true, error: false, data: [], }); let [error, setError] = useState({ message: "", loading: false, status: false, }); // for displaying error message on the page //function to call referral history API const allReferrals = () => { setReferralList({ loading: true, error: false, data: [], }); apiCall .getReferralHx() .then((res) => { setReferralList((prev) => { return { ...prev, loading: false, data: [...res.data.result_list] }; }); }) .catch((error) => { setReferralList((prev) => ({ ...prev, loading: false, error: true })); }); }; //FUNCTION TO SEND REFERRAL MESSAGE const sendReferralMsg = (postData) => { apiCall .sendReferralMsg(postData) .then((res) => { if (res.data.internal_return < 0) { setError({ message: res.data.status, loading: false, status: false, }); return; } else { toast.success(res.data.status | "Message Sent!"); setError({ message: "", loading: false, status: true }); setRefHistoryReload((prev) => !prev); } }) .catch((error) => { setError({ message: "Opps! an error occured, try again later", loading: false, status: false, }); }); }; //FUNCTION TO HANDLE SUBMIT const handleSubmit = (values, helpers) => { setError({ message: "", loading: true, status: false }); sendReferralMsg({...values}); // FUNCTION TO SEND REFERRAL MESSAGE }; const [selectedTab, setSelectedTab] = useState("Send Referral"); const tabs = [ //STATE FOR SWITCHING BETWEEN TABS { id: 1, title: "Send Referral", iconName: "history", }, { id: 2, title: "Referral List", iconName: "history", }, ] useEffect(() => { allReferrals(); }, [refHistoryReload]); return (