From 665d6b8c94c2f1c6afc5da24a57dfd77ea9523f7 Mon Sep 17 00:00:00 2001 From: AmirHossein Mahmoodi Date: Sun, 13 Apr 2025 13:16:02 +0330 Subject: [PATCH] add sidebar update in action --- .../complaintList/Form/registerAction/index.jsx | 1 + .../complaintList/RowActions/Refer/ReferContent.jsx | 1 + .../operator/Form/EditForm/EditController.jsx | 1 + .../RowActions/ConfirmDialog/ConfirmContent.jsx | 1 + .../RowActions/RejectDialog/RejectFormContent.jsx | 1 + .../RowActions/RestoreForm/RestoreContent.jsx | 2 +- .../operator/Actions/Create/Forms/index.jsx | 1 + .../ObservedGashtCreate/RowActions/CompleteItem.jsx | 1 + .../operator/RowActions/EditForm/EditController.jsx | 13 +++++-------- .../RowActions/ConfirmForm/ConfirmContent.jsx | 1 + .../RowActions/DeleteForm/DeleteContent.jsx | 4 +++- .../RowActions/RejectForm/RejectContent.jsx | 1 + .../RowActions/RestoreForm/RestoreContent.jsx | 4 +++- .../operator/Form/StepOne/CreateFormContent.jsx | 1 + .../operator/Form/StepThree/StepThreeContent.jsx | 1 + .../operator/Form/StepTwo/StepTwoContent.jsx | 1 + .../RowActions/DeleteDialog/DeleteContent.jsx | 4 +++- src/lib/hooks/useRequest.js | 13 +++++++++++++ src/lib/hooks/useSidebarBadge.js | 8 +++----- 19 files changed, 43 insertions(+), 17 deletions(-) diff --git a/src/components/dashboard/fastReact/complaintList/Form/registerAction/index.jsx b/src/components/dashboard/fastReact/complaintList/Form/registerAction/index.jsx index 168acb3..850bc7d 100644 --- a/src/components/dashboard/fastReact/complaintList/Form/registerAction/index.jsx +++ b/src/components/dashboard/fastReact/complaintList/Form/registerAction/index.jsx @@ -29,6 +29,7 @@ const RegisterAction = ({ rowId, mutate, mutateParentTable }) => { } await requestServer(`${REGISTER_COMPLAINTS_LIST}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then((res) => { mutate(); diff --git a/src/components/dashboard/fastReact/complaintList/RowActions/Refer/ReferContent.jsx b/src/components/dashboard/fastReact/complaintList/RowActions/Refer/ReferContent.jsx index 59774e6..37f5a50 100644 --- a/src/components/dashboard/fastReact/complaintList/RowActions/Refer/ReferContent.jsx +++ b/src/components/dashboard/fastReact/complaintList/RowActions/Refer/ReferContent.jsx @@ -38,6 +38,7 @@ const ReferContent = ({ rowId, mutate, setOpenReferDialog }) => { formData.append("refer_description", data.description); await requestServer(`${REFER_FAST_REACT}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then(() => { mutate(); diff --git a/src/components/dashboard/fastReact/operator/Form/EditForm/EditController.jsx b/src/components/dashboard/fastReact/operator/Form/EditForm/EditController.jsx index 6a46985..f20797f 100644 --- a/src/components/dashboard/fastReact/operator/Form/EditForm/EditController.jsx +++ b/src/components/dashboard/fastReact/operator/Form/EditForm/EditController.jsx @@ -47,6 +47,7 @@ const EditController = ({ rowId, mutate, setOpenEditDialog }) => { await requestServer(`${UPDATE_FAST_REACT}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then(() => { mutate(); diff --git a/src/components/dashboard/fastReact/supervisor/RowActions/ConfirmDialog/ConfirmContent.jsx b/src/components/dashboard/fastReact/supervisor/RowActions/ConfirmDialog/ConfirmContent.jsx index 5944db3..2a27c3e 100644 --- a/src/components/dashboard/fastReact/supervisor/RowActions/ConfirmDialog/ConfirmContent.jsx +++ b/src/components/dashboard/fastReact/supervisor/RowActions/ConfirmDialog/ConfirmContent.jsx @@ -22,6 +22,7 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog }) => { formData.append("verify", 1); requestServer(`${VERIFY_BY_FAST_REACT_SUPERVISOR}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then(() => { mutate(); diff --git a/src/components/dashboard/fastReact/supervisor/RowActions/RejectDialog/RejectFormContent.jsx b/src/components/dashboard/fastReact/supervisor/RowActions/RejectDialog/RejectFormContent.jsx index 5c51886..016c89c 100644 --- a/src/components/dashboard/fastReact/supervisor/RowActions/RejectDialog/RejectFormContent.jsx +++ b/src/components/dashboard/fastReact/supervisor/RowActions/RejectDialog/RejectFormContent.jsx @@ -31,6 +31,7 @@ const RejectContent = ({ rowId, mutate, setOpenRejectDialog }) => { formData.append("verify", 2); requestServer(`${REJECT_BY_FAST_REACT_SUPERVISOR}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then(() => { mutate(); diff --git a/src/components/dashboard/fastReact/supervisor/RowActions/RestoreForm/RestoreContent.jsx b/src/components/dashboard/fastReact/supervisor/RowActions/RestoreForm/RestoreContent.jsx index 06c86a6..b62566f 100644 --- a/src/components/dashboard/fastReact/supervisor/RowActions/RestoreForm/RestoreContent.jsx +++ b/src/components/dashboard/fastReact/supervisor/RowActions/RestoreForm/RestoreContent.jsx @@ -8,7 +8,7 @@ const RestoreContent = ({ rowId, mutate, setOpenRestoreDialog }) => { const requestServer = useRequest({ notificationSuccess: true }); const handleClick = () => { setSubmitting(true); - requestServer(`${RESTORE_FAST_REACT}/${rowId}`, "post") + requestServer(`${RESTORE_FAST_REACT}/${rowId}`, "post", { hasSidebarUpdate: true }) .then(() => { mutate(); setOpenRestoreDialog(false); diff --git a/src/components/dashboard/roadItems/operator/Actions/Create/Forms/index.jsx b/src/components/dashboard/roadItems/operator/Actions/Create/Forms/index.jsx index edcc098..40d0c2a 100644 --- a/src/components/dashboard/roadItems/operator/Actions/Create/Forms/index.jsx +++ b/src/components/dashboard/roadItems/operator/Actions/Create/Forms/index.jsx @@ -14,6 +14,7 @@ const OperatorCreateForm = ({ open, setOpen, mutate }) => { } await requestServer(CREATE_ROAD_ITEMS, "post", { data: formData, + hasSidebarUpdate: true, }) .then((response) => { mutate(); diff --git a/src/components/dashboard/roadItems/operator/Actions/ObservedGashtCreate/RowActions/CompleteItem.jsx b/src/components/dashboard/roadItems/operator/Actions/ObservedGashtCreate/RowActions/CompleteItem.jsx index 3ef226d..457ae8b 100644 --- a/src/components/dashboard/roadItems/operator/Actions/ObservedGashtCreate/RowActions/CompleteItem.jsx +++ b/src/components/dashboard/roadItems/operator/Actions/ObservedGashtCreate/RowActions/CompleteItem.jsx @@ -117,6 +117,7 @@ const CompleteItem = ({ subItem, itemInfo, setSubmitCompleteForm, mutate, setOpe await requestServer(CREATE_ROAD_ITEMS, "post", { data: formData, + hasSidebarUpdate: true, }) .then((response) => { mutate(); diff --git a/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditController.jsx b/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditController.jsx index 4c4fcc9..ef28c64 100644 --- a/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditController.jsx +++ b/src/components/dashboard/roadItems/operator/RowActions/EditForm/EditController.jsx @@ -69,14 +69,11 @@ const EditController = ({ rowId, mutate, setOpenEditDialog, openEditDialog, row for (const [key, value] of Object.entries(result)) { formData.append(key, value); } - await requestServer( - `${UPDATE_ROAD_ITEMS}/${rowId}`, - "post", - { - data: formData, - }, - { notificationSuccess: true } - ) + await requestServer(`${UPDATE_ROAD_ITEMS}/${rowId}`, "post", { + data: formData, + notificationSuccess: true, + hasSidebarUpdate: true, + }) .then((response) => { mutate(); setOpenEditDialog(false); diff --git a/src/components/dashboard/roadItems/supervisor/RowActions/ConfirmForm/ConfirmContent.jsx b/src/components/dashboard/roadItems/supervisor/RowActions/ConfirmForm/ConfirmContent.jsx index 648ab37..4cba1f8 100644 --- a/src/components/dashboard/roadItems/supervisor/RowActions/ConfirmForm/ConfirmContent.jsx +++ b/src/components/dashboard/roadItems/supervisor/RowActions/ConfirmForm/ConfirmContent.jsx @@ -23,6 +23,7 @@ const ConfirmContent = ({ rowId, mutate, setOpenConfirmDialog }) => { formData.append("verify", 1); requestServer(`${VERIFY_BY_SUPERVISOR}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then(() => { mutate(); diff --git a/src/components/dashboard/roadItems/supervisor/RowActions/DeleteForm/DeleteContent.jsx b/src/components/dashboard/roadItems/supervisor/RowActions/DeleteForm/DeleteContent.jsx index 2d03dc7..4bfb3ea 100644 --- a/src/components/dashboard/roadItems/supervisor/RowActions/DeleteForm/DeleteContent.jsx +++ b/src/components/dashboard/roadItems/supervisor/RowActions/DeleteForm/DeleteContent.jsx @@ -8,7 +8,9 @@ const DeleteContent = ({ rowId, mutate, setOpenDeleteDialog }) => { const requestServer = useRequest({ notificationSuccess: true }); const handleClick = () => { setSubmitting(true); - requestServer(`${DELETE_BY_SUPERVISOR}/${rowId}`, "post") + requestServer(`${DELETE_BY_SUPERVISOR}/${rowId}`, "post", { + hasSidebarUpdate: true, + }) .then(() => { mutate(); setOpenDeleteDialog(false); diff --git a/src/components/dashboard/roadItems/supervisor/RowActions/RejectForm/RejectContent.jsx b/src/components/dashboard/roadItems/supervisor/RowActions/RejectForm/RejectContent.jsx index 3d319fa..cfe5162 100644 --- a/src/components/dashboard/roadItems/supervisor/RowActions/RejectForm/RejectContent.jsx +++ b/src/components/dashboard/roadItems/supervisor/RowActions/RejectForm/RejectContent.jsx @@ -31,6 +31,7 @@ const RejectContent = ({ rowId, mutate, setOpenRejectDialog }) => { formData.append("verify", 2); await requestServer(`${REJECT_BY_SUPERVISOR}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then(() => { mutate(); diff --git a/src/components/dashboard/roadItems/supervisor/RowActions/RestoreForm/RestoreContent.jsx b/src/components/dashboard/roadItems/supervisor/RowActions/RestoreForm/RestoreContent.jsx index 3155406..61192d7 100644 --- a/src/components/dashboard/roadItems/supervisor/RowActions/RestoreForm/RestoreContent.jsx +++ b/src/components/dashboard/roadItems/supervisor/RowActions/RestoreForm/RestoreContent.jsx @@ -8,7 +8,9 @@ const RestoreContent = ({ rowId, mutate, setOpenRestoreDialog }) => { const requestServer = useRequest({ notificationSuccess: true }); const handleClick = () => { setSubmitting(true); - requestServer(`${RESTORE_BY_SUPERVISOR}/${rowId}`, "post") + requestServer(`${RESTORE_BY_SUPERVISOR}/${rowId}`, "post", { + hasSidebarUpdate: true, + }) .then(() => { mutate(); setOpenRestoreDialog(false); diff --git a/src/components/dashboard/roadSafety/operator/Form/StepOne/CreateFormContent.jsx b/src/components/dashboard/roadSafety/operator/Form/StepOne/CreateFormContent.jsx index 6c49683..f9a7a60 100644 --- a/src/components/dashboard/roadSafety/operator/Form/StepOne/CreateFormContent.jsx +++ b/src/components/dashboard/roadSafety/operator/Form/StepOne/CreateFormContent.jsx @@ -90,6 +90,7 @@ const CreateFormContent = ({ setOpen, mutate }) => { formData.append("point", startPoint); await requestServer(FIRST_STEP_STORE, "post", { data: formData, + hasSidebarUpdate: true, }) .then((response) => { mutate(); diff --git a/src/components/dashboard/roadSafety/operator/Form/StepThree/StepThreeContent.jsx b/src/components/dashboard/roadSafety/operator/Form/StepThree/StepThreeContent.jsx index f884c13..ff87cb3 100644 --- a/src/components/dashboard/roadSafety/operator/Form/StepThree/StepThreeContent.jsx +++ b/src/components/dashboard/roadSafety/operator/Form/StepThree/StepThreeContent.jsx @@ -37,6 +37,7 @@ const StepThreeContent = ({ setOpen, mutate, rowId }) => { formData.append("action_picture", data.action_picture); await requestServer(`${THIRD_STEP_STORE}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then((response) => { mutate(); diff --git a/src/components/dashboard/roadSafety/operator/Form/StepTwo/StepTwoContent.jsx b/src/components/dashboard/roadSafety/operator/Form/StepTwo/StepTwoContent.jsx index 1b9099d..e76b59a 100644 --- a/src/components/dashboard/roadSafety/operator/Form/StepTwo/StepTwoContent.jsx +++ b/src/components/dashboard/roadSafety/operator/Form/StepTwo/StepTwoContent.jsx @@ -48,6 +48,7 @@ const StepTwoContent = ({ setOpenStepTwoDialog, mutate, rowId }) => { data.judiciary_document.map((item, index) => formData.append(`judiciary_document[${index}]`, item)); await requestServer(`${SECOND_STEP_STORE}/${rowId}`, "post", { data: formData, + hasSidebarUpdate: true, }) .then((response) => { mutate(); diff --git a/src/components/dashboard/roadSafety/operator/RowActions/DeleteDialog/DeleteContent.jsx b/src/components/dashboard/roadSafety/operator/RowActions/DeleteDialog/DeleteContent.jsx index 7a83c08..bb88f78 100644 --- a/src/components/dashboard/roadSafety/operator/RowActions/DeleteDialog/DeleteContent.jsx +++ b/src/components/dashboard/roadSafety/operator/RowActions/DeleteDialog/DeleteContent.jsx @@ -8,7 +8,9 @@ const DeleteContent = ({ rowId, mutate, setOpenDeleteDialog }) => { const requestServer = useRequest({ notificationSuccess: true }); const handleClick = () => { setSubmitting(true); - requestServer(`${DELETE_SAFETY_AND_PRIVACY}/${rowId}`, "delete") + requestServer(`${DELETE_SAFETY_AND_PRIVACY}/${rowId}`, "delete", { + hasSidebarUpdate: true, + }) .then(() => { mutate(); setOpenDeleteDialog(false); diff --git a/src/lib/hooks/useRequest.js b/src/lib/hooks/useRequest.js index 8e6d121..0587778 100644 --- a/src/lib/hooks/useRequest.js +++ b/src/lib/hooks/useRequest.js @@ -2,6 +2,7 @@ import { errorResponse } from "@/core/utils/errorResponse"; import { successRequest } from "@/core/utils/successRequest"; import axios from "axios"; import { useAuth } from "../contexts/auth"; +import { useSidebarBadge } from "./useSidebarBadge"; const defaultOptions = { data: {}, @@ -11,13 +12,22 @@ const defaultOptions = { notificationShow: true, notificationSuccess: false, notificationFailed: true, + hasSidebarUpdate: false, }; const useRequest = (initOptions) => { + const { mutate: sidebarUpdate } = useSidebarBadge(); const { logout } = useAuth(); const _options = Object.assign({}, defaultOptions, initOptions); + /** + * Performs an HTTP request. + * @param {string} url - The URL to send the request to. + * @param {'get' | 'post' | 'put' | 'delete'} [method='get'] - HTTP method. + * @param {object} [options] - Additional request options. + * @returns {Promise} - Axios response. + */ return async (url = "", method = "get", options) => { const mergedOptions = Object.assign({}, _options, options); try { @@ -28,6 +38,9 @@ const useRequest = (initOptions) => { withCredentials: true, ...mergedOptions.requestOptions, }); + if (mergedOptions.hasSidebarUpdate) { + if (method === "post" || method === "put" || method === "delete") sidebarUpdate(); + } successRequest(mergedOptions.notificationShow && mergedOptions.notificationSuccess, "request_data"); return response; } catch (error) { diff --git a/src/lib/hooks/useSidebarBadge.js b/src/lib/hooks/useSidebarBadge.js index 994cf21..e74e358 100644 --- a/src/lib/hooks/useSidebarBadge.js +++ b/src/lib/hooks/useSidebarBadge.js @@ -1,18 +1,16 @@ import { GET_SIDEBAR_BADGE_ROUTE } from "@/core/utils/routes"; +import axios from "axios"; import useSWR from "swr"; -import useRequest from "./useRequest"; export const useSidebarBadge = () => { - const request = useRequest(); - const fetcher = async (url) => { try { - const response = await request(url); + const response = await axios({ url, method: "get", withCredentials: true }); return response.data.data; } catch (error) { throw new Error(); } }; - return useSWR(GET_SIDEBAR_BADGE_ROUTE, fetcher, { keepPreviousData: true, dedupingInterval: 10000 }); + return useSWR(GET_SIDEBAR_BADGE_ROUTE, fetcher, { keepPreviousData: true, dedupingInterval: 30000 }); };