diff --git a/src/components/FamilyAcc/FamilyTable.jsx b/src/components/FamilyAcc/FamilyTable.jsx index 3a2a0fe..facd5f9 100644 --- a/src/components/FamilyAcc/FamilyTable.jsx +++ b/src/components/FamilyAcc/FamilyTable.jsx @@ -42,15 +42,15 @@ export default function FamilyTable({ className, familyList, loader }) { key={idx} >
|
-
-
diff --git a/src/components/MyPendingJobs/MyPendingJobTable.jsx b/src/components/MyPendingJobs/MyPendingJobTable.jsx
index b63e091..d40c81e 100644
--- a/src/components/MyPendingJobs/MyPendingJobTable.jsx
+++ b/src/components/MyPendingJobs/MyPendingJobTable.jsx
@@ -1,112 +1,144 @@
import React, { useState } from "react";
-import dataImage1 from "../../assets/images/data-table-user-1.png";
import dataImage2 from "../../assets/images/data-table-user-2.png";
-import dataImage3 from "../../assets/images/data-table-user-3.png";
-import dataImage4 from "../../assets/images/data-table-user-4.png";
-import SelectBox from "../Helpers/SelectBox";
import PendingJobsPopout from "../jobPopout/PendingJobsPopout";
-import PaginatedList from "../Pagination/PaginatedList";
import { handlePagingFunc } from "../Pagination/HandlePagination";
+import PaginatedList from "../Pagination/PaginatedList";
-export default function MyPendingJobTable({MyJobList, className }) {
- const filterCategories = ["All Categories", "Explore", "Featured"];
- const [selectedCategory, setCategory] = useState(filterCategories[0]);
+export default function MyPendingJobTable({ MyJobList, className }) {
+ const filterCategories = ["All Categories", "Explore", "Featured"];
+ const [selectedCategory, setCategory] = useState(filterCategories[0]);
+ let [jobPopout, setJobPopout] = useState({ show: false, data: {} }); // STATE TO HOLD THE VALUE OF THE ALERT DETAILS AND DETERMINE WHEN TO SHOW
- let [jobPopout,setJobPopout] = useState({show:false, data:{}}) // STATE TO HOLD THE VALUE OF THE ALERT DETAILS AND DETERMINE WHEN TO SHOW
+ const [currentPage, setCurrentPage] = useState(0);
+ const indexOfFirstItem = Number(currentPage);
+ const indexOfLastItem =
+ Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE);
+ const currentActiveJobList = MyJobList?.result_list?.slice(
+ indexOfFirstItem,
+ indexOfLastItem
+ );
- const [currentPage, setCurrentPage] = useState(0);
- const indexOfFirstItem = Number(currentPage);
- const indexOfLastItem = Number(indexOfFirstItem)+Number(process.env.REACT_APP_ITEM_PER_PAGE);
- const currentActiveJobList = MyJobList?.result_list?.slice(indexOfFirstItem, indexOfLastItem);
-
- const handlePagination = (e) => {
- handlePagingFunc(e,setCurrentPage)
- }
+ const handlePagination = (e) => {
+ handlePagingFunc(e, setCurrentPage);
+ };
- return (
-
+
+
-
+
{value.title}@@ -196,11 +197,11 @@ export default function MyJobTable({ MyJobList, className }) { prev={currentPage == 0 ? true : false} next={ currentPage + Number(process.env.REACT_APP_ITEM_PER_PAGE) >= - MyJobList?.result_list?.length + MyJobList?.data?.result_list?.length ? true : false } - data={MyJobList?.result_list} + data={MyJobList?.data?.result_list} start={indexOfFirstItem} stop={indexOfLastItem} /> @@ -227,6 +228,7 @@ export default function MyJobTable({ MyJobList, className }) { onClose={() => { setDeleteJobPopout({ show: false, data: {} }); }} + reloadJobList={reloadJobList} situation={deleteJobPopout.show} /> )} diff --git a/src/components/MyJobs/index.jsx b/src/components/MyJobs/index.jsx index 339e678..c1ef1a0 100644 --- a/src/components/MyJobs/index.jsx +++ b/src/components/MyJobs/index.jsx @@ -40,7 +40,7 @@ export default function MyJobs(props) { >
- {MyJobList && MyJobList?.result_list &&
-
+ );
}
diff --git a/src/components/MyTasks/MyJobTable.jsx b/src/components/MyTasks/MyJobTable.jsx
index 679dd13..a069186 100644
--- a/src/components/MyTasks/MyJobTable.jsx
+++ b/src/components/MyTasks/MyJobTable.jsx
@@ -1,48 +1,42 @@
import React, { useCallback, useEffect, useMemo, useState } from "react";
import dataImage1 from "../../assets/images/data-table-user-1.png";
-import dataImage2 from "../../assets/images/data-table-user-2.png";
-import dataImage3 from "../../assets/images/data-table-user-3.png";
-import dataImage4 from "../../assets/images/data-table-user-4.png";
-import SelectBox from "../Helpers/SelectBox";
import PaginatedList from "../Pagination/PaginatedList";
import { handlePagingFunc } from "../Pagination/HandlePagination";
import usersService from "../../services/UsersService";
+import LoadingSpinner from "../Spinners/LoadingSpinner";
export default function MyJobTable({ className }) {
- const filterCategories = ["All Categories", "Explore", "Featured"];
- const [selectedCategory, setCategory] = useState(filterCategories[0]);
const [tasksData, setTasksData] = useState(null);
+ const [loader, setLoader] = useState(true);
let apiCall = useMemo(() => new usersService(), []);
const displayTasks = useCallback(async () => {
try {
const res = await apiCall.getMyActiveTaskList();
- console.log('Ebube step', res)
let {
- data: { result_list },
- internal_return,
- statusText,
- } = await res;
+ data: { result_list },
+ internal_return,
+ statusText,
+ } = await res;
if (internal_return < 0 || statusText !== "OK") return;
setTasksData(result_list);
+ setLoader(false);
} catch (error) {
throw new Error(error);
}
}, [apiCall]);
useEffect(() => {
- displayTasks()
- }, [])
-
- let data = ["1", "2", "3", "4", "5", "6"]; // to be replaced later by result from API CALL
+ displayTasks();
+ }, []);
const [currentPage, setCurrentPage] = useState(0);
const indexOfFirstItem = Number(currentPage);
const indexOfLastItem =
Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE);
- const currentTask = data.slice(indexOfFirstItem, indexOfLastItem);
+ const currentTask = tasksData?.slice(indexOfFirstItem, indexOfLastItem);
const handlePagination = (e) => {
handlePagingFunc(e, setCurrentPage);
@@ -54,438 +48,29 @@ export default function MyJobTable({ className }) {
className || ""
}`}
>
- {tasksData && (
+ {loader ? (
+
-
- );
+ )}
+
+ {/* Active Job Popout */}
+ {jobPopout.show && (
+
+
+ |
+
+ ))}
+ >
+ }
+
+
+ ) : (
- {/*
+
{tasksData?.length > 0 ? (
- tasksData?.map((task, idx) => (
+ currentTask?.map((task, idx) => (
-
+
+
@@ -537,11 +132,11 @@ export default function MyJobTable({ className }) {
prev={currentPage == 0 ? true : false}
next={
currentPage + Number(process.env.REACT_APP_ITEM_PER_PAGE) >=
- data.length
+ tasksData?.length
? true
: false
}
- data={data}
+ data={tasksData}
start={indexOfFirstItem}
stop={indexOfLastItem}
/>
diff --git a/src/components/jobPopout/DeleteJobPopout.jsx b/src/components/jobPopout/DeleteJobPopout.jsx
index 50d3feb..a7dfd10 100644
--- a/src/components/jobPopout/DeleteJobPopout.jsx
+++ b/src/components/jobPopout/DeleteJobPopout.jsx
@@ -3,8 +3,11 @@ import ModalCom from '../Helpers/ModalCom'
import { useNavigate } from 'react-router-dom'
import usersService from '../../services/UsersService'
import LoadingSpinner from '../Spinners/LoadingSpinner'
+import { useDispatch } from 'react-redux'
+import { tableReload } from '../../store/TableReloads'
function DeleteJobPopout({details, onClose, situation}) {
+ let dispatch = useDispatch()
const navigate = useNavigate()
const ApiCall = new usersService()
@@ -26,10 +29,10 @@ function DeleteJobPopout({details, onClose, situation}) {
}
setRequestStatus({laoding: false, status:true, message: 'Job deleted successfully'})
setTimeout(()=>{
- navigate('/myjobs', {replace: true})
- onClose()
- // window.location.reload()
- }, 1000)
+ dispatch(tableReload({type:'JOBTABLE'}))
+ navigate('/myjobs', {replace: true})
+ onClose()
+ }, 1000)
}).catch(error => {
setRequestStatus({laoding: false, status:false, message: 'Opps! something went wrong, try again'})
}).finally(()=>{
diff --git a/src/components/jobPopout/EditJobPopout.jsx b/src/components/jobPopout/EditJobPopout.jsx
index 7addfcc..72e9e7b 100644
--- a/src/components/jobPopout/EditJobPopout.jsx
+++ b/src/components/jobPopout/EditJobPopout.jsx
@@ -7,7 +7,13 @@ import LoadingSpinner from "../Spinners/LoadingSpinner";
import usersService from "../../services/UsersService";
import { useNavigate } from "react-router-dom";
+import { tableReload } from "../../store/TableReloads";
+import { useDispatch } from "react-redux";
+
const EditJobPopOut = ({ details, onClose, situation, country }) => {
+
+ const dispatch = useDispatch()
+
let [requestStatus, setRequestStatus] = useState({
loading: false,
status: false,
@@ -69,6 +75,7 @@ const EditJobPopOut = ({ details, onClose, situation, country }) => {
if (data?.internal_return < 0) return;
setRequestStatus({ loading: false, message: null });
setTimeout(() => {
+ dispatch(tableReload({type:'JOBTABLE'}))
navigate("/myjobs", { replace: true });
onClose();
}, 1000);
diff --git a/src/store/TableReloads.js b/src/store/TableReloads.js
new file mode 100644
index 0000000..486e258
--- /dev/null
+++ b/src/store/TableReloads.js
@@ -0,0 +1,29 @@
+import { createSlice } from "@reduxjs/toolkit";
+
+const initialState = {
+ jobListTable: false,
+ pendingListTable: false
+};
+
+export const tableReloadSlice = createSlice({
+ name: "tableReload",
+ initialState,
+ reducers: {
+ tableReload: (state, action) => {
+ switch(action.payload.type){
+ case 'JOBTABLE':
+ state.jobListTable = !state.jobListTable;
+ return
+ case 'PENDINGTABLE' :
+ state.pendingListTable = !state.pendingListTable;
+ return
+ default:
+ return state
+ }
+ },
+ },
+});
+
+export const { tableReload } = tableReloadSlice.actions;
+
+export default tableReloadSlice.reducer;
\ No newline at end of file
diff --git a/src/store/store.js b/src/store/store.js
index 07fbf4f..579e97d 100644
--- a/src/store/store.js
+++ b/src/store/store.js
@@ -3,11 +3,13 @@ import drawerReducer from "./drawer";
import userDetailReducer from "./UserDetails";
import jobReducer from "./jobLists";
+import tableReloadReducer from "./TableReloads";
export default configureStore({
reducer: {
drawer: drawerReducer,
userDetails: userDetailReducer,
- jobLists: jobReducer
+ jobLists: jobReducer,
+ tableReload: tableReloadReducer
},
});
\ No newline at end of file
diff --git a/src/views/MyJobsPage.jsx b/src/views/MyJobsPage.jsx
index 6e85279..6faea5e 100644
--- a/src/views/MyJobsPage.jsx
+++ b/src/views/MyJobsPage.jsx
@@ -4,25 +4,31 @@ import React, { useContext,useState, useEffect } from "react";
// import UsersService from "../services/UsersService";
import usersService from "../services/UsersService";
import MyJobs from "../components/MyJobs";
+import { useSelector } from "react-redux";
export default function MyJobsPage() {
+ const {jobListTable} = useSelector((state) => state.tableReload)
+
// const userApi = new usersService();
// const activeJobList = userApi.getMyJobList();
- const [MyJobList, setMyJobList] = useState([]);
+ const [MyJobList, setMyJobList] = useState({loading: true, data:[]});
const api = new usersService();
const getMyJobList = async () => {
+ setMyJobList({loading: true, data:[]})
try {
const res = await api.getMyJobList();
- setMyJobList(res.data);
+ setMyJobList({loading: false, data:res.data})
+ // setMyJobList(res.data);
} catch (error) {
+ setMyJobList({loading: false, data:[]})
console.log("Error getting mode");
}
};
useEffect(() => {
getMyJobList();
- }, []);
+ }, [jobListTable]);
// debugger;
return (
{task?.title}@@ -494,19 +79,29 @@ export default function MyJobTable({ className }) { Price: - {task?.price} + + {task?.price} + Duration: - {Number(task?.timeline_days) === 1 ? `${task?.timeline_days} day` : `${task?.timeline_days} day(s)`} + + {Number(task?.timeline_days) === 1 + ? `${task?.timeline_days} day` + : `${task?.timeline_days} day(s)`} + Due Date: - {task?.delivery_date} + + {task?.delivery_date} + Confirmation: - {task?.contract} + + {task?.contract} + |