diff --git a/src/components/MyJobs/MyJobTable.jsx b/src/components/MyJobs/MyJobTable.jsx
index 4b4ffde..1e94fd8 100644
--- a/src/components/MyJobs/MyJobTable.jsx
+++ b/src/components/MyJobs/MyJobTable.jsx
@@ -1,5 +1,5 @@
import { useCallback, useEffect, useMemo, useState } from "react";
-import { useSelector } from "react-redux";
+import { useDispatch, useSelector } from "react-redux";
import usersService from "../../services/UsersService";
import { PriceFormatter } from "../Helpers/PriceFormatter";
import SelectBox from "../Helpers/SelectBox";
@@ -11,9 +11,13 @@ import EditJobPopOut from "../jobPopout/EditJobPopout";
import DeleteIcon from "../../assets/images/icon-delete.svg";
import EditIcon from "../../assets/images/icon-edit.svg";
+import { tableReload } from "../AddJob/settings";
+import CreditPopup from "../MyWallet/Popup/CreditPopup";
import JobListPopout from "../jobPopout/JobListPopout";
export default function MyJobTable({ MyJobList, reloadJobList, className }) {
+ const dispatch = useDispatch();
+
// Getting the categories
const currentJobCart = MyJobList?.data?.categories;
// DropDown Box
@@ -23,21 +27,44 @@ export default function MyJobTable({ MyJobList, reloadJobList, className }) {
Object.keys(filterCategories)[0]
);
- let [jobPopout, setJobPopout] = useState({ show: false, data: {} }); // STATE TO HOLD THE VALUE OF THE ALERT DETAILS AND DETERMINE WHEN TO SHOW
+ const [jobPopout, setJobPopout] = useState({ show: false, data: {} });
- let [deleteJobPopout, setDeleteJobPopout] = useState({
+ const [deleteJobPopout, setDeleteJobPopout] = useState({
show: false,
data: {},
- }); // STATE TO HOLD THE VALUE OF THE ITEM DETAILS TO DELETE AND DETERMINE WHEN TO SHOW
+ });
const [editJob, setEditJob] = useState({ show: false, data: {} });
const [myCountry, setCountries] = useState("");
+
const {
userDetails: { country },
} = useSelector((state) => state?.userDetails);
const userApi = useMemo(() => new usersService(), []);
+ const [creditPopup, setCreditPopup] = useState({ show: false, data: {} });
+ const [walletItem, setWalletItem] = useState(null);
+
+ /**
+ * Opens the credit popup.
+ * @param {Object} value - The value object.
+ */
+ const openPopUp = (value) => {
+ setCreditPopup({
+ show: true,
+ data: { ...value },
+ });
+ };
+
+ /**
+ * Closes the credit popup and dispatches a table reload action.
+ */
+ const closePopUp = () => {
+ setCreditPopup({ show: false, data: {} });
+ dispatch(tableReload({ type: "WALLETTABLE" }));
+ };
+
// Get Country Api
const getCountryList = useCallback(async () => {
try {
@@ -98,6 +125,121 @@ export default function MyJobTable({ MyJobList, reloadJobList, className }) {
}
};
+ const { MyJobListHeader, MyJobListTable } = myJobTableFeatures(
+ filterCategories,
+ selectedCategory,
+ handleSetCategory,
+ setDeleteJobPopout,
+ setEditJob,
+ setJobPopout,
+ MyJobList,
+ filteredCurrentJobList,
+ handlePagination,
+ currentPage,
+ currentJobList,
+ indexOfFirstItem,
+ indexOfLastItem
+ );
+
+ return (
+
+
+ {MyJobList?.loading ? (
+
+ ) : (
+
+ )}
+
+ {/* Job List Popout */}
+ {jobPopout.show && (
+ {
+ setJobPopout({ show: false, data: {} });
+ }}
+ setWalletItem={setWalletItem}
+ openWallet={openPopUp}
+ situation={jobPopout.show}
+ />
+ )}
+ {/* End of Job List Popout */}
+
+ {/* Delete Job Popout */}
+ {deleteJobPopout.show && (
+ {
+ setDeleteJobPopout({ show: false, data: {} });
+ }}
+ reloadJobList={reloadJobList}
+ situation={deleteJobPopout.show}
+ />
+ )}
+ {/* END of Delete Job Popout */}
+
+ {editJob.show && (
+ {
+ setEditJob({
+ show: false,
+ data: {},
+ });
+ }}
+ situation={editJob.show}
+ country={myCountry}
+ categories={currentJobCart}
+ />
+ )}
+
+ {creditPopup.show && (
+
+ )}
+
+ );
+}
+
+function myJobTableFeatures(
+ filterCategories,
+ selectedCategory,
+ handleSetCategory,
+ setDeleteJobPopout,
+ setEditJob,
+ setJobPopout,
+ MyJobList,
+ filteredCurrentJobList,
+ handlePagination,
+ currentPage,
+ currentJobList,
+ indexOfFirstItem,
+ indexOfLastItem
+) {
+ // List of job table features
+ const MyJobListHeader = () => (
+
+
+
+ {filterCategories[selectedCategory]} Jobs
+
+
+
+
+ );
+
const JobListItem = ({ value, index, image_server }) => {
let thePrice = PriceFormatter(
value?.price * 0.01,
@@ -187,7 +329,10 @@ export default function MyJobTable({ MyJobList, reloadJobList, className }) {