diff --git a/src/components/MyPendingJobs/MyPendingJobTable.jsx b/src/components/MyPendingJobs/MyPendingJobTable.jsx index 4a9b001..7b63dca 100644 --- a/src/components/MyPendingJobs/MyPendingJobTable.jsx +++ b/src/components/MyPendingJobs/MyPendingJobTable.jsx @@ -6,6 +6,7 @@ import PendingJobsPopout from "../jobPopout/PendingJobsPopout"; import { PriceFormatter } from "../Helpers/PriceFormatter"; import localImgLoad from "../../lib/localImgLoad"; + export default function MyPendingJobTable({ MyJobList, className }) { let [jobPopout, setJobPopout] = useState({ show: false, data: {} }); // STATE TO HOLD THE VALUE OF THE ALERT DETAILS AND DETERMINE WHEN TO SHOW diff --git a/src/components/MyPendingJobs/index.jsx b/src/components/MyPendingJobs/index.jsx index 7e4cc66..2bf8d44 100644 --- a/src/components/MyPendingJobs/index.jsx +++ b/src/components/MyPendingJobs/index.jsx @@ -3,6 +3,7 @@ import { Link } from "react-router-dom"; import Layout from "../Partials/Layout"; import CommonHead from "../UserHeader/CommonHead"; import MyPendingJobTable from "./MyPendingJobTable"; +import LoadingSpinner from "../Spinners/LoadingSpinner"; export default function MyPendingJobs(props) { const [selectTab, setValue] = useState("today"); @@ -35,7 +36,13 @@ export default function MyPendingJobs(props) { > - + {props.MyJobList.loading ? +
+ +
+ : + + } diff --git a/src/components/jobPopout/PendingJobsPopout.jsx b/src/components/jobPopout/PendingJobsPopout.jsx index 5b2331f..a0e9532 100644 --- a/src/components/jobPopout/PendingJobsPopout.jsx +++ b/src/components/jobPopout/PendingJobsPopout.jsx @@ -1,10 +1,14 @@ -import React, { useCallback, useMemo, useState } from "react"; -import Detail from "./popoutcomponent/Detail"; -import ModalCom from "../Helpers/ModalCom"; -import usersService from "../../services/UsersService"; +import React, { useMemo, useState } from "react"; import { toast } from "react-toastify"; -import LoadingSpinner from "../Spinners/LoadingSpinner"; +import usersService from "../../services/UsersService"; +import ModalCom from "../Helpers/ModalCom"; import { PriceFormatter } from "../Helpers/PriceFormatter"; +import LoadingSpinner from "../Spinners/LoadingSpinner"; +import Detail from "./popoutcomponent/Detail"; +import { useNavigate } from "react-router-dom"; + +import { useDispatch } from "react-redux"; +import { tableReload } from "../../store/TableReloads"; const showSuccessToast = (message) => { toast.success(message, { @@ -14,48 +18,85 @@ const showSuccessToast = (message) => { }; function PendingJobsPopout({ details, onClose, situation }) { + + const dispatch = useDispatch() + const navigate = useNavigate() + const [pendingJobLoader, setPendingJobLoader] = useState({ extend: false, offer: false, }); - const apiCall = useMemo(() => new usersService(), []); - const handlePendingJobsBtn = useCallback( - async ({ target: { name } }) => { + let [requestMessage, setRequestMessage] = useState({status: false, message: ''}) + + const apiCall = new usersService(); + + const handlePendingJobsBtn = ({ target: { name } }) => { let { job_uid, offer_code } = details; let reqData; let pendingData = { job_uid, offer_code }; + if(name=='extend'){ // RUNS THIS TO EXTEND JOB EXPIRY BY ONE WEEK + reqData = { ...pendingData }; + setPendingJobLoader({ extend: true }); + apiCall.pendingJobExtend(reqData).then(res => { + setRequestMessage({status: true, message: res.data.result}) + dispatch(tableReload({ type: "PENDINGTABLE" })); + setTimeout(() => { + setPendingJobLoader({ extend: false, offer: false }); + setRequestMessage({status: false, message: ''}) + onClose(); + }, 2700); + }).catch(error => { + setRequestMessage({status: false, message:'Try Again'}) + setTimeout(() => { + setPendingJobLoader({ extend: false, offer: false }); + setRequestMessage({status: false, message: ''}) + }, 2700); + }) + }else if(name=='offer'){ // RUNS THIS IF JOB IS SENT TO USER + reqData = { ...pendingData }; + setPendingJobLoader({ offer: true }); + apiCall.pendingJobSendTome(reqData).then(res => { + setRequestMessage({status: true, message: res.data.result}) + setTimeout(() => { + setPendingJobLoader({ extend: false, offer: false }); + setRequestMessage({status: false, message: ''}) + }, 2700); + }).catch(error => { + setRequestMessage('Try Again') + setTimeout(() => { + setPendingJobLoader({ extend: false, offer: false }); + setRequestMessage({status: false, message: ''}) + }, 2700); + }) + } else return + // try { + // if (name === "extend") { + // setPendingJobLoader({ extend: true }); + // reqData = { ...pendingData }; + // // let { data } = + // await apiCall.pendingJobExtend(reqData); + // showSuccessToast("Job has been extended by a week!"); + // dispatch(tableReload({ type: "PENDINGTABLE" })); + // } else if (name === "offer") { + // setPendingJobLoader({ offer: true }); + // reqData = { ...pendingData }; + // // let { data } = + // await apiCall.pendingJobSendTome(reqData); + // showSuccessToast("Offer sent, check your email"); + // } else return; - try { - 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({ extend: false, offer: false }); - throw new Error(error); - } - }, - [onClose, apiCall, details] - ); + // setTimeout(() => { + // setPendingJobLoader({ extend: false, offer: false }); + // onClose(); + // }, 2700); + // } catch (error) { + // setPendingJobLoader({ extend: false, offer: false }); + // throw new Error(error); + // } + } return ( @@ -101,7 +142,8 @@ function PendingJobsPopout({ details, onClose, situation }) {

- This Job have been sent to public view + {/* This Job have been sent to public view */} + This Job have been sent to {details.job_to}

This Job will expire

@@ -153,13 +195,13 @@ function PendingJobsPopout({ details, onClose, situation }) { /> -
+ {/*
-
+
*/} {/* ACTION SECTION */} @@ -168,11 +210,11 @@ function PendingJobsPopout({ details, onClose, situation }) {

- Job sent to public view + Job sent to {details.job_to}

-
+
+ {pendingJobLoader.extend && requestMessage.message && +
+

{requestMessage.message}

+
+ }
+ {pendingJobLoader.offer && requestMessage.message && +
+

{requestMessage.message}

+
+ } +