import React, { Suspense, lazy, useState } from "react"; import Detail from "./popoutcomponent/Detail"; import ModalCom from "../Helpers/ModalCom"; import { useNavigate } from "react-router-dom"; import usersService from "../../services/UsersService"; import LoadingSpinner from "../Spinners/LoadingSpinner"; import localImgLoad from "../../lib/localImgLoad"; import { tableReload } from "../../store/TableReloads"; import { useDispatch } from "react-redux"; import { SocketValues } from "../Contexts/SocketIOContext"; import AttachFile from "../attachmentCom/AttachFile"; const VideoElement = lazy(() => import("../VideoCom/VideoElement")); const ImageElement = lazy(() => import("../ImageCon/ImageElement")); function FamilyOfferJobPopout({ details, onClose, situation }) { const {parentAssignJobToKid} = SocketValues() const apiUrl = new usersService(); const navigate = useNavigate(); const dispatch = useDispatch(); const [requestStatus, setRequestStatus] = useState({ loading: false, status: false, message: "", trigger: "", }); //FUNCTION TO HANDLE AN OFFER const handleOffer = ({ target: { name } }) => { const reqData = { // offer_result: 100, offer_code: details.contract, contract: details.contract, }; //logic to determine the button pressed and set reqDate accordingly if (name == "accept") { setRequestStatus({ loading: true, status: false, message: "", trigger: "offer", }); reqData.offer_result = 100; } if (name == "reject") { setRequestStatus({ loading: true, status: false, message: "", trigger: "reject", }); reqData.offer_result = 333; } // API CALL apiUrl .offersResponse(reqData) .then((response) => { if (response.status != 200 || response.data.internal_return < 0) { setRequestStatus({ loading: false, status: false, message: `Unable to ${name} Offer, try again later`, trigger: "", }); return; } setRequestStatus({ loading: false, status: true, message: `Offer ${name}ed Successfully`, trigger: "", }); // trigger socket event to refresh parent side //SENDS MESSAGE TO SOCKET TO UPDATE PARENT ACCOUNT WHEN CHILD ACCEPTS OR REJECTS A JOB ASSIGNED BY PARENT // message, room let socketMsg = { "audience": "PARENT", "action": "REFRESH_TASK", "family_uid": sessionStorage.getItem('family_uid'), } let socketRoom = `FAMILY-${sessionStorage.getItem('parent_uid')}` parentAssignJobToKid(socketMsg, socketRoom) //SENDS MESSAGE TO SOCKET TO UPDATE CHILD ACCOUNT // end of socket event trigger setTimeout(() => { onClose(); dispatch(tableReload({ type: "MYTASKTABLE" })); navigate("/mytask", { replace: true }); setRequestStatus({ loading: false, status: false, message: "", trigger: "", }); }, 2000); }) .catch((error) => { setRequestStatus({ loading: false, status: false, message: `Opps! An Error Occurred`, trigger: "", }); }) .finally(() => { setTimeout(() => { setRequestStatus({ loading: false, status: false, message: "", trigger: "", }); }, 5000); }); }; return (

Start Task

{details.title}

{/* INPUT SECTION */}
{/* ACTION SECTION */}
{ details.job_type == 'TASK' ?
Loading...

}>
:
Loading...

}>
}
{requestStatus.loading && requestStatus.trigger == "offer" ? ( ) : ( // )}
{/*
{requestStatus.loading && requestStatus.trigger == "reject" ? ( ) : ( )}
*/}
{/* close button */}
{/* ERROR DISPLAY AND SUBMIT BUTTON */}
{requestStatus.message}
{/* End of error or success display */}
{/* end of close button */}
); } export default FamilyOfferJobPopout;