import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; 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"; const validationSchema = Yup.object().shape({ email: Yup.string() .email("Wrong email format") .min(3, "Minimum 3 characters") .max(50, "Maximum 50 characters") .required("Email is required"), firstname: Yup.string() .min(3, "Minimum 3 characters") .max(25, "Maximum 25 characters") .required("Firstname is required"), lastname: Yup.string() .min(3, "Minimum 3 characters") .max(25, "Maximum 25 characters") .required("Lastname is required"), }); const initialValues = { firstname: "", lastname: "", email: "", }; function ReferralDisplay() { const apiCall = new usersService(); // GET API CALL const navigate = useNavigate(); 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: "Email already referred", loading: false, status: false, }); return; } else { toast.success("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 }); var postData = { uid: localStorage.getItem("uid"), member_id: localStorage.getItem("member_id"), sessionid: localStorage.getItem("session_token"), action: 11032, ...values, }; sendReferralMsg(postData); // FUNCTION TO SEND REFERRAL MESSAGE }; useEffect(() => { allReferrals(); }, [refHistoryReload]); return (