diff --git a/src/components/FamilyAcc/FamilyManageTabs.jsx b/src/components/FamilyAcc/FamilyManageTabs.jsx
index a43f059..bae4234 100644
--- a/src/components/FamilyAcc/FamilyManageTabs.jsx
+++ b/src/components/FamilyAcc/FamilyManageTabs.jsx
@@ -1,12 +1,10 @@
import React, {
Suspense,
lazy,
- useCallback,
useEffect,
useMemo,
useRef,
useState,
- useTransition,
} from "react";
import { useReactToPrint } from "react-to-print";
import profile from "../../assets/images/profile-info-profile.png";
@@ -29,17 +27,34 @@ export default function FamilyManageTabs({
listReload,
loader,
}) {
+ const initialDetailState = {
+ loading: false,
+ data: null,
+ };
+
const [details, setDetails] = useState({
- familyDetails: { loading: false, data: null },
- familyTasks: { loading: false, data: null },
- familyWaitList: { loading: false, data: null },
- familyPending: { loading: false, data: null },
+ familyDetails: { ...initialDetailState },
+ familyTasks: { ...initialDetailState },
+ familyWaitList: { ...initialDetailState },
+ familyPending: { ...initialDetailState },
});
+
+ const resetDetails = () => {
+ setDetails({
+ familyDetails: { ...initialDetailState },
+ familyTasks: { ...initialDetailState },
+ familyWaitList: { ...initialDetailState },
+ familyPending: { ...initialDetailState },
+ });
+ };
+
+ const [familyTask, setFamilyTask] = useState({ loading: false, data: [] });
+ const [activeTask, setActiveTask] = useState({ id: 0, data: {} }); // HOLDS SELECTED TASK
+
const [errMsg, setErrMsg] = useState("");
const [familyTaskPopout, setFamilyTaskPopout] = useState(false);
const [profileImg, setProfileImg] = useState(profile);
const profileImgInput = useRef(null);
- const [isPending, startTransition] = useTransition();
const apiCall = useMemo(() => new usersService(), []);
const familyPopUpHandler = () => {
@@ -60,62 +75,6 @@ export default function FamilyManageTabs({
}
};
- const manageFamily = useCallback(async () => {
- try {
- setDetails((prevDetails) => ({
- ...prevDetails,
- familyDetails: { loading: true },
- familyTasks: { loading: true },
- familyWaitList: { loading: true },
- familyPending: { loading: true },
- }));
-
- const { family_uid } = accountDetails;
- const reqData = { family_uid };
-
- const [familyRes, tasksRes, familyWaitRes, familyPending] =
- await Promise.all([
- apiCall.ManageFamily(reqData),
- apiCall.ManageTasks(reqData),
- apiCall.ManageFamilyWaitlist(),
- apiCall.ManageFamilyPending(),
- ]);
-
- const familyData = familyRes.data;
- const tasksData = tasksRes.data;
- const familyWaitData = familyWaitRes.data;
- const familyPendingData = familyPending.data;
-
- if (
- familyData?.internal_return < 0 ||
- tasksData?.internal_return < 0 ||
- familyWaitData?.internal_return < 0 ||
- familyPendingData?.internal_return < 0
- ) {
- return;
- }
-
- startTransition(() => {
- setDetails({
- familyDetails: { loading: false, data: familyData },
- familyTasks: { loading: false, data: tasksData },
- familyWaitList: { loading: false, data: familyWaitData },
- familyPending: { loading: false, data: familyPendingData },
- });
- });
- } catch (error) {
- setDetails((prevDetails) => ({
- ...prevDetails,
- familyDetails: { loading: false },
- familyTasks: { loading: false },
- familyWaitList: { loading: false },
- familyPending: { loading: false },
- }));
- setErrMsg("An error occurred");
- throw new Error(error);
- }
- }, [apiCall, accountDetails]);
-
const accountRef = useRef();
const useHandlePrint = useReactToPrint({
@@ -131,9 +90,7 @@ export default function FamilyManageTabs({
const [tab, setTab] = useState(tabs[0].name);
const tabHandler = (value) => {
- startTransition(() => {
- setTab(value);
- });
+ setTab(value);
};
const tabComponents = {
@@ -156,7 +113,7 @@ export default function FamilyManageTabs({
),
Account: (
@@ -182,14 +139,93 @@ export default function FamilyManageTabs({
const selectedTabComponent = tabComponents[tab] || defaultTabComponent;
useEffect(() => {
- let __manageFamily = true;
- if (__manageFamily) {
- manageFamily();
- }
- return () => {
- __manageFamily = false;
+ const manageFamily = async () => {
+ try {
+ resetDetails();
+
+ setDetails({
+ familyDetails: { loading: true },
+ familyTasks: { loading: true },
+ familyWaitList: { loading: true },
+ familyPending: { loading: true },
+ });
+
+ const { family_uid } = accountDetails;
+ const reqData = { family_uid };
+
+ const [familyRes, tasksRes, familyWaitRes, familyPending] =
+ await Promise.all([
+ apiCall.ManageFamily(reqData),
+ apiCall.ManageTasks(reqData),
+ apiCall.ManageFamilyWaitlist(),
+ apiCall.ManageFamilyPending(),
+ ]);
+
+ const familyData = familyRes.data;
+ const tasksData = tasksRes.data;
+ const familyWaitData = familyWaitRes.data;
+ const familyPendingData = familyPending.data;
+
+ // In order to check errors
+ const checkDataError = (data) => data?.internal_return < 0;
+
+ if (
+ checkDataError(familyData) ||
+ checkDataError(tasksData) ||
+ checkDataError(familyWaitData) ||
+ checkDataError(familyPendingData)
+ ) {
+ return;
+ }
+
+ setDetails({
+ familyDetails: { loading: false, data: familyData },
+ familyTasks: { loading: false, data: tasksData },
+ familyWaitList: { loading: false, data: familyWaitData },
+ familyPending: { loading: false, data: familyPendingData },
+ });
+ } catch (error) {
+ resetDetails();
+ setErrMsg("An error occurred");
+ throw new Error(error);
+ }
};
- }, [tab, manageFamily]);
+
+ manageFamily();
+ }, []);
+
+ useEffect(() => {
+ let checkFamilyTask = true;
+ const reqData = {
+ limit: 30,
+ offset: 0,
+ job_type: "FAMILY",
+ action: 13005,
+ };
+
+ if (checkFamilyTask) {
+ setFamilyTask({ loading: true });
+ apiCall
+ .getMyJobList(reqData)
+ .then((res) => {
+ setFamilyTask({ loading: false, data: res?.data?.result_list });
+ if (res?.data?.result_list?.length) {
+ setActiveTask((prev) => ({
+ ...prev,
+ data: res?.data?.result_list[0],
+ }));
+ }
+ })
+ .catch((err) => {
+ setFamilyTask({ loading: false, data: [] });
+ console.log("Error", err);
+ });
+ }
+
+ return () => {
+ checkFamilyTask = false;
+ };
+ }, []);
return (
-
+
)}
diff --git a/src/components/FamilyAcc/FamilyPopout/AssignTaskPopout.jsx b/src/components/FamilyAcc/FamilyPopout/AssignTaskPopout.jsx
index 7985238..af2f662 100644
--- a/src/components/FamilyAcc/FamilyPopout/AssignTaskPopout.jsx
+++ b/src/components/FamilyAcc/FamilyPopout/AssignTaskPopout.jsx
@@ -1,441 +1,418 @@
-import React, { useState, useEffect, useTransition } from "react";
-import ModalCom from "../../Helpers/ModalCom";
-import Detail from "../../jobPopout/popoutcomponent/Detail";
+import React, { useState } from "react";
import usersService from "../../../services/UsersService";
-import LoadingSpinner from "../../Spinners/LoadingSpinner";
+import ModalCom from "../../Helpers/ModalCom";
import { PriceFormatter } from "../../Helpers/PriceFormatter";
+import LoadingSpinner from "../../Spinners/LoadingSpinner";
+import Detail from "../../jobPopout/popoutcomponent/Detail";
import { NewTasks } from "./forms";
-const AssignTaskPopout = React.memo(({ action, details, situation, familyDetails }) => {
- const apiCall = new usersService();
+const AssignTaskPopout = React.memo(
+ ({
+ action,
+ details,
+ situation,
+ familyDetailsData,
+ familyTask,
+ activeTask,
+ setActiveTask,
+ }) => {
+ const apiCall = new usersService();
- let [requestStatus, setRequestStatus] = useState({
- loading: false,
- status: false,
- message: "",
- }); // HOLDS RESPONSE FOR SENDING API REQUEST
+ let [requestStatus, setRequestStatus] = useState({
+ loading: false,
+ status: false,
+ message: "",
+ }); // HOLDS RESPONSE FOR SENDING API REQUEST
- let [familyTask, setFamilyTask] = useState({ loading: false, data: [] });
+ let [taskType, setTaskType] = useState(details ? "new" : "select"); // SWITCHES BTW SELECT TASK AND NEW TASK
- let [taskType, setTaskType] = useState(details ? "new" : "select"); // SWITCHES BTW SELECT TASK AND NEW TASK
+ const switchTaskType = ({ target: { value } }) => {
+ // FUNCTION TO CHANGE SELECTED ACTIVE TASK
+ setTaskType(value);
+ };
- let [activeTask, setActiveTask] = useState({ id: 0, data: {} }); // HOLDS SELECTED TASK
+ const handleActiveTask = (id = 0, data = {}) => {
+ // FUNCTION TO CHANGE SELECTED ACTIVE TASK
+ setActiveTask({ id, data });
+ };
- const switchTaskType = ({ target: { value } }) => {
- // FUNCTION TO CHANGE SELECTED ACTIVE TASK
- setTaskType(value);
- };
+ // New Task
+ const [formState, setFormState] = useState({
+ // Initialize form state with desired fields
+ banner: details?.banner || "default.jpg",
+ country: details?.country || "",
+ price: details?.price || "",
+ title: details?.title || "",
+ description: details?.description || "",
+ job_detail: details?.job_detail || "",
+ timeline_days: details?.timeline_days || "",
+ category: details?.category || "",
+ });
- const handleActiveTask = (id = 0, data = {}) => {
- // FUNCTION TO CHANGE SELECTED ACTIVE TASK
- setActiveTask({ id, data });
- };
-
- // New Task
- const [formState, setFormState] = useState({
- // Initialize form state with desired fields
- banner: details?.banner || "default.jpg",
- country: details?.country || "",
- price: details?.price || "",
- title: details?.title || "",
- description: details?.description || "",
- job_detail: details?.job_detail || "",
- timeline_days: details?.timeline_days || "",
- category: details?.category || "",
- });
-
- const assignFamilyTask = () => {
- setRequestStatus({ loading: true, status: false, message: "" });
- let reqData = {};
- if (taskType == "select") {
- // RUNS HERE IF TASK TYPE IS SELECT
- if (!Object.keys(activeTask.data).length) {
- setRequestStatus({
- loading: false,
- status: false,
- message: "No Task is seleted",
- });
- return setTimeout(() => {
- setRequestStatus({ loading: false, status: false, message: "" });
- }, 3000);
- }
- reqData = {
- // API PAYLOADS
- job_id: activeTask.data?.job_id,
- job_uid: activeTask.data?.job_uid,
- family_uid: familyDetails?.uid || details?.family_uid,
- job_description: activeTask.data?.description,
- assign_mode: 110011,
- };
- }
-
- if (taskType === "new") {
- const {
- banner,
- category,
- country,
- description,
- job_detail,
- price,
- timeline_days,
- title,
- } = formState;
-
- const requiredFields = {
- banner,
- // category,
- country,
- description,
- job_detail,
- price,
- timeline_days,
- title,
- };
-
- for (let field in requiredFields) {
- if (requiredFields[field] == "") {
- // let currencyErrMsg = field == "country" && "currency"
+ const assignFamilyTask = () => {
+ setRequestStatus({ loading: true, status: false, message: "" });
+ let reqData = {};
+ if (taskType == "select") {
+ // RUNS HERE IF TASK TYPE IS SELECT
+ if (!Object.keys(activeTask.data).length) {
setRequestStatus({
loading: false,
status: false,
- message: `${field} is empty`,
+ message: "No Task is seleted",
});
return setTimeout(() => {
setRequestStatus({ loading: false, status: false, message: "" });
}, 3000);
}
+ reqData = {
+ // API PAYLOADS
+ job_id: activeTask.data?.job_id,
+ job_uid: activeTask.data?.job_uid,
+ family_uid: familyDetailsData?.uid || details?.family_uid,
+ job_description: activeTask.data?.description,
+ assign_mode: 110011,
+ };
}
- reqData = {
- banner,
- category,
- country,
- description,
- job_detail,
- price: price * 100,
- timeline_days,
- title,
- assign_mode: 110055,
- family_uid: details?.family_uid || familyDetails?.uid,
- };
- }
+ if (taskType === "new") {
+ const {
+ banner,
+ category,
+ country,
+ description,
+ job_detail,
+ price,
+ timeline_days,
+ title,
+ } = formState;
- apiCall
- .assignFamilyTask(reqData)
- .then((res) => {
- if (res.status != 200 || res.data.internal_return < 0) {
+ const requiredFields = {
+ banner,
+ // category,
+ country,
+ description,
+ job_detail,
+ price,
+ timeline_days,
+ title,
+ };
+
+ for (let field in requiredFields) {
+ if (requiredFields[field] == "") {
+ // let currencyErrMsg = field == "country" && "currency"
+ setRequestStatus({
+ loading: false,
+ status: false,
+ message: `${field} is empty`,
+ });
+ return setTimeout(() => {
+ setRequestStatus({ loading: false, status: false, message: "" });
+ }, 3000);
+ }
+ }
+
+ reqData = {
+ banner,
+ category,
+ country,
+ description,
+ job_detail,
+ price: price * 100,
+ timeline_days,
+ title,
+ assign_mode: 110055,
+ family_uid: details?.family_uid || familyDetailsData?.uid,
+ };
+ }
+
+ apiCall
+ .assignFamilyTask(reqData)
+ .then((res) => {
+ if (res.status != 200 || res.data.internal_return < 0) {
+ setRequestStatus({
+ loading: false,
+ status: false,
+ message: "failed to assign task",
+ });
+ return setTimeout(() => {
+ setRequestStatus({ loading: false, status: false, message: "" });
+ }, 5000);
+ }
+ setRequestStatus({
+ loading: false,
+ status: true,
+ message: "action successful",
+ });
+ setTimeout(() => {
+ setRequestStatus({ loading: false, status: false, message: "" });
+ action(); // FUNCTION THAT CLOSES THE MODAL BOX
+ }, 5000);
+ })
+ .catch((err) => {
setRequestStatus({
loading: false,
status: false,
- message: "failed to assign task",
+ message: "An Error occured, try again",
});
- return setTimeout(() => {
+ setTimeout(() => {
setRequestStatus({ loading: false, status: false, message: "" });
}, 5000);
- }
- setRequestStatus({
- loading: false,
- status: true,
- message: "action successful",
});
- setTimeout(() => {
- setRequestStatus({ loading: false, status: false, message: "" });
- action(); // FUNCTION THAT CLOSES THE MODAL BOX
- }, 5000);
- })
- .catch((err) => {
- setRequestStatus({
- loading: false,
- status: false,
- message: "An Error occured, try again",
- });
- setTimeout(() => {
- setRequestStatus({ loading: false, status: false, message: "" });
- }, 5000);
- });
- };
-
- useEffect(() => {
- let checkFamilyTask = true;
- const reqData = {
- limit: 30,
- offset: 0,
- job_type: "FAMILY",
- action: 13005,
};
- apiCall
- .getMyJobList(reqData)
- .then((res) => {
- if (checkFamilyTask) {
- setFamilyTask({ loading: false, data: res?.data?.result_list });
- if (res?.data?.result_list?.length) {
- setActiveTask((prev) => ({
- ...prev,
- data: res?.data?.result_list[0],
- }));
- }
- }
- })
- .catch((err) => {
- setFamilyTask({ loading: false, data: [] });
- console.log("Error", err);
- });
-
- return () => {
- checkFamilyTask = false;
- };
- }, []);
-
- return (
- <>
-
-
-
-
- Assign task to {familyDetails?.firstname || details?.firstName}
-
-