From 8765329256cee1781e2b551792e4d1e1bce243ab Mon Sep 17 00:00:00 2001 From: Ebube Date: Sun, 4 Jun 2023 02:13:00 +0100 Subject: [PATCH] . --- .../jobPopout/PendingJobsPopout.jsx | 89 ++++++++++++------- 1 file changed, 59 insertions(+), 30 deletions(-) diff --git a/src/components/jobPopout/PendingJobsPopout.jsx b/src/components/jobPopout/PendingJobsPopout.jsx index a4f2681..160437c 100644 --- a/src/components/jobPopout/PendingJobsPopout.jsx +++ b/src/components/jobPopout/PendingJobsPopout.jsx @@ -1,46 +1,63 @@ -import React, { useMemo, useState } from "react"; +import React, { useCallback, useMemo, useState } from "react"; import Detail from "./popoutcomponent/Detail"; import ModalCom from "../Helpers/ModalCom"; import usersService from "../../services/UsersService"; +import { toast } from "react-toastify"; +import LoadingSpinner from "../Spinners/LoadingSpinner"; + +const showSuccessToast = (message) => { + toast.success(message, { + autoClose: 3000, + hideProgressBar: true, + }); +}; function PendingJobsPopout({ details, onClose, situation }) { - const [pendingJobLoader, setPendingJobLoader] = useState(false) + const [pendingJobLoader, setPendingJobLoader] = useState({ + extend: false, + offer: false, + }); const apiCall = useMemo(() => new usersService(), []); - - const handlePendingJobsBtn = async ({ target: { name } }) => { - setPendingJobLoader(true) - let { job_uid, offer_code } = details; - let reqData; + const handlePendingJobsBtn = useCallback( + async ({ target: { name } }) => { + let { job_uid, offer_code } = details; - let pendingData = { job_uid, offer_code }; + let reqData; + + let pendingData = { job_uid, offer_code }; - if (name === "extend") { try { - reqData = { ...pendingData }; - let { data } = await apiCall.pendingJobExtend(reqData); - console.log("This is for extend", data); - setPendingJobLoader(false) + if (name === "extend") { + setPendingJobLoader({ extend: true }); + reqData = { ...pendingData }; + // let { data } = + await apiCall.pendingJobExtend(reqData); + // console.log("This is for extend", data); + showSuccessToast("Job has been extended by a week!"); + } else if (name === "offer") { + setPendingJobLoader({ offer: true }); + reqData = { ...pendingData }; + // let { data } = + await apiCall.pendingJobSendTome(reqData); + // console.log("This is for offer", data); + showSuccessToast("Offer sent, check your email"); + } else return; + + setTimeout(() => { + setPendingJobLoader({ extend: false, offer: false }); + onClose(); + }, 2700); } catch (error) { - setPendingJobLoader(false) + setPendingJobLoader({ extend: false, offer: false }); throw new Error(error); } - } else if (name === "offer") { - try { - reqData = { ...pendingData }; - let { data } = await apiCall.pendingJobSendTome(reqData); - console.log("This is for offer", data); - setPendingJobLoader(false) - } catch (error) { - setPendingJobLoader(false) - throw new Error(error); - } - } else return; + }, + [onClose, apiCall, details] + ); - onClose(); - }; return ( - +

@@ -159,7 +176,13 @@ function PendingJobsPopout({ details, onClose, situation }) { onClick={handlePendingJobsBtn} name="extend" > - Extend by a week + {pendingJobLoader.extend ? ( +
+ +
+ ) : ( + "Extend by a week" + )}

@@ -169,7 +192,13 @@ function PendingJobsPopout({ details, onClose, situation }) { onClick={handlePendingJobsBtn} name="offer" > - Send to me + {pendingJobLoader.offer ? ( +
+ +
+ ) : ( + "Send to me" + )}
-- 2.34.1