diff --git a/src/components/Expenses/ViewExpense.jsx b/src/components/Expenses/ViewExpense.jsx
index 664a315b..e535495e 100644
--- a/src/components/Expenses/ViewExpense.jsx
+++ b/src/components/Expenses/ViewExpense.jsx
@@ -30,7 +30,7 @@ import moment from "moment";
import ExpenseStatusLogs from "./ExpenseStatusLogs";
const ViewExpense = ({ ExpenseId }) => {
- const { data, isLoading, isError, error } = useExpense(ExpenseId);
+ const { data, isLoading, isError, error, isFetching } = useExpense(ExpenseId);
const [IsPaymentProcess, setIsPaymentProcess] = useState(false);
const [clickedStatusId, setClickedStatusId] = useState(null);
@@ -363,7 +363,7 @@ const ViewExpense = ({ ExpenseId }) => {
)}
)}
-
{
onSuccess: (updatedExpense, variables) => {
showToast("Request processed successfully.", "success");
- queryClient.setQueriesData(
- {
- queryKey: ["Expenses"],
- exact: false,
- },
- (oldData) => {
- if (!oldData) return oldData;
- return {
- ...oldData,
- data: oldData.data.map((item) =>
- item.id === updatedExpense.id
- ? {
- ...item,
- nextStatus: updatedExpense.nextStatus,
- status: updatedExpense.status,
- }
- : item
- ),
- };
- }
- );
+ // queryClient.setQueriesData(
+ // {
+ // queryKey: ["Expenses"],
+ // exact: false,
+ // },
+ // (oldData) => {
+ // if (!oldData) return oldData;
+ // return {
+ // ...oldData,
+ // data: oldData.data.map((item) =>
+ // item.id === updatedExpense.id
+ // ? {
+ // ...item,
+ // nextStatus: updatedExpense.nextStatus,
+ // status: updatedExpense.status,
+ // }
+ // : item
+ // ),
+ // };
+ // }
+ // );
// queryClient.setQueriesData(
// { queryKey: ["Expense", updatedExpense.id] },
// (oldData) => {
@@ -200,6 +200,7 @@ export const useActionOnExpense = (onSuccessCallBack) => {
// }
// );
queryClient.invalidateQueries({queryKey:["Expense",updatedExpense.id]})
+ queryClient.invalidateQueries({queryKey:["Expenses",updatedExpense.id]})
if (onSuccessCallBack) onSuccessCallBack();
},
diff --git a/src/pages/master/MasterPage.jsx b/src/pages/master/MasterPage.jsx
index c11f5861..7904e6af 100644
--- a/src/pages/master/MasterPage.jsx
+++ b/src/pages/master/MasterPage.jsx
@@ -1,94 +1,94 @@
import React, { useState, useEffect, useMemo } from "react";
import Breadcrumb from "../../components/common/Breadcrumb";
import MasterModal from "../../components/master/MasterModal";
-import { mastersList} from "../../data/masters";
+import { mastersList } from "../../data/masters";
import { useDispatch, useSelector } from "react-redux";
import { changeMaster } from "../../slices/localVariablesSlice";
import useMaster from "../../hooks/masterHook/useMaster"
import MasterTable from "./MasterTable";
import { getCachedData } from "../../slices/apiDataManager";
-import {useHasUserPermission} from "../../hooks/useHasUserPermission";
+import { useHasUserPermission } from "../../hooks/useHasUserPermission";
import { MANAGE_MASTER } from "../../utils/constants";
-import {useQueryClient} from "@tanstack/react-query";
+import { useQueryClient } from "@tanstack/react-query";
const MasterPage = () => {
-const [modalConfig, setModalConfig] = useState({ modalType: "", item: null, masterType: null });
-const [searchTerm, setSearchTerm] = useState('');
-const [filteredResults, setFilteredResults] = useState([]);
-const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);
+ const [modalConfig, setModalConfig] = useState({ modalType: "", item: null, masterType: null });
+ const [searchTerm, setSearchTerm] = useState('');
+ const [filteredResults, setFilteredResults] = useState([]);
+ const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);
-const hasMasterPermission = useHasUserPermission(MANAGE_MASTER);
-const dispatch = useDispatch();
-const selectedMaster = useSelector((store) => store.localVariables.selectedMaster);
-const queryClient = useQueryClient();
+ const hasMasterPermission = useHasUserPermission(MANAGE_MASTER);
+ const dispatch = useDispatch();
+ const selectedMaster = useSelector((store) => store.localVariables.selectedMaster);
+ const queryClient = useQueryClient();
-const { data: masterData = [], loading, error, RecallApi } = useMaster();
+ const { data: masterData = [], loading, error, RecallApi } = useMaster();
-const openModal = () => setIsCreateModalOpen(true);
+ const openModal = () => setIsCreateModalOpen(true);
-const closeModal = () => {
- setIsCreateModalOpen(false);
- setModalConfig(null);
-
- // Clean up Bootstrap modal manually
- const modalEl = document.getElementById('master-modal');
- modalEl?.classList.remove('show');
- if (modalEl) modalEl.style.display = 'none';
-
- document.body.classList.remove('modal-open');
- document.body.style.overflow = 'auto';
-
- document.querySelectorAll('.modal-backdrop').forEach((el) => el.remove());
-};
-
-const handleModalData = (modalType, item, masterType = selectedMaster) => {
- setModalConfig({ modalType, item, masterType });
-};
-
-const handleSearch = (e) => {
- const value = e.target.value.toLowerCase();
- setSearchTerm(value);
-
- if (!masterData?.length) return;
-
- const results = masterData.filter((item) =>
- Object.values(item).some(
- (field) => field?.toString().toLowerCase().includes(value)
- )
- );
- setFilteredResults(results);
-};
-const displayData = useMemo(() => {
- if (searchTerm) return filteredResults;
- return queryClient.getQueryData(["masterData", selectedMaster]) || masterData;
-}, [searchTerm, filteredResults, selectedMaster, masterData]);
-
-const columns = useMemo(() => {
- if (!displayData?.length) return [];
- return Object.keys(displayData[0]).map((key) => ({
- key,
- label: key.toUpperCase(),
- }));
-}, [displayData]);
-
-useEffect(() => {
- if (modalConfig) openModal();
-}, [modalConfig]);
-
-useEffect(() => {
- return () => {
+ const closeModal = () => {
setIsCreateModalOpen(false);
- closeModal();
+ setModalConfig(null);
+
+ // Clean up Bootstrap modal manually
+ const modalEl = document.getElementById('master-modal');
+ modalEl?.classList.remove('show');
+ if (modalEl) modalEl.style.display = 'none';
+
+ document.body.classList.remove('modal-open');
+ document.body.style.overflow = 'auto';
+
+ document.querySelectorAll('.modal-backdrop').forEach((el) => el.remove());
};
-}, []);
+
+ const handleModalData = (modalType, item, masterType = selectedMaster) => {
+ setModalConfig({ modalType, item, masterType });
+ };
+
+ const handleSearch = (e) => {
+ const value = e.target.value.toLowerCase();
+ setSearchTerm(value);
+
+ if (!masterData?.length) return;
+
+ const results = masterData.filter((item) =>
+ Object.values(item).some(
+ (field) => field?.toString().toLowerCase().includes(value)
+ )
+ );
+ setFilteredResults(results);
+ };
+ const displayData = useMemo(() => {
+ if (searchTerm) return filteredResults;
+ return queryClient.getQueryData(["masterData", selectedMaster]) || masterData;
+ }, [searchTerm, filteredResults, selectedMaster, masterData]);
+
+ const columns = useMemo(() => {
+ if (!displayData?.length) return [];
+ return Object.keys(displayData[0]).map((key) => ({
+ key,
+ label: key.toUpperCase(),
+ }));
+ }, [displayData]);
+
+ useEffect(() => {
+ if (modalConfig) openModal();
+ }, [modalConfig]);
+
+ useEffect(() => {
+ return () => {
+ setIsCreateModalOpen(false);
+ closeModal();
+ };
+ }, []);
return (
<>
{isCreateModalOpen && (
-
-
+
+
)}
@@ -100,7 +100,7 @@ useEffect(() => {
>
-
+
{
>
-
+
diff --git a/src/pages/master/MasterTable.jsx b/src/pages/master/MasterTable.jsx
index b5f65857..bc7c10c0 100644
--- a/src/pages/master/MasterTable.jsx
+++ b/src/pages/master/MasterTable.jsx
@@ -184,7 +184,7 @@ const MasterTable = ({ data, columns, loading, handleModalData }) => {
{/* Pagination */}
{!loading && safeData.length > 20 && (