diff --git a/src/app/purchase/detail/page.tsx b/src/app/purchase/detail/page.tsx
index 6ca2ffc7..955055a6 100644
--- a/src/app/purchase/detail/page.tsx
+++ b/src/app/purchase/detail/page.tsx
@@ -12,7 +12,7 @@ const PurchaseDetail = () => {
const purchaseId = searchParams.get('purchaseId');
- const { data: purchase, isLoading: isLoadingPurchase } = useSWR(
+ const { data: purchase, isLoading: isLoadingPurchase, mutate: mutatePurchase } = useSWR(
purchaseId,
(id: number) => PurchaseApi.getSingle(id)
);
@@ -40,7 +40,11 @@ const PurchaseDetail = () => {
)}
{!isLoadingPurchase && isResponseSuccess(purchase) && (
-
+
)}
);
diff --git a/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx b/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx
index bac362f9..eac38bbc 100644
--- a/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx
+++ b/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx
@@ -9,6 +9,7 @@ import Button from '@/components/Button';
import TextInput from '@/components/input/TextInput';
import NumberInput from '@/components/input/NumberInput';
import SelectInput, { OptionType } from '@/components/input/SelectInput';
+import { useRouter } from 'next/navigation';
import {
PurchaseRequestAcceptApprovalFormDefaultValues,
@@ -30,6 +31,7 @@ interface PurchaseOrderAcceptApprovalFormProps {
onCancel?: () => void;
refreshApprovals?: () => void;
onModalClose?: () => void;
+ onRefetchData?: () => void;
}
const PurchaseOrderAcceptApprovalForm = ({
@@ -38,7 +40,9 @@ const PurchaseOrderAcceptApprovalForm = ({
onCancel,
refreshApprovals,
onModalClose,
+ onRefetchData,
}: PurchaseOrderAcceptApprovalFormProps) => {
+ const router = useRouter();
const searchParams = useSearchParams();
const [purchaseOrderFormErrorMessage, setPurchaseOrderFormErrorMessage] =
useState('');
@@ -105,11 +109,13 @@ const PurchaseOrderAcceptApprovalForm = ({
}
toast.success(res?.message as string);
refreshApprovals?.();
+ onRefetchData?.();
formik.resetForm();
onCancel?.();
onModalClose?.();
+ router.refresh();
},
- [initialValues?.id, searchParams, refreshApprovals, onModalClose]
+ [initialValues?.id, searchParams, refreshApprovals, onModalClose, onRefetchData]
);
const updateAcceptApprovalHandler = useCallback(
@@ -121,12 +127,13 @@ const PurchaseOrderAcceptApprovalForm = ({
}
toast.success(res?.message as string);
refreshApprovals?.();
+ onRefetchData?.();
formik.resetForm();
onCancel?.();
onModalClose?.();
- window.location.href = '/purchase';
+ router.refresh();
},
- [refreshApprovals, onModalClose]
+ [refreshApprovals, onModalClose, onRefetchData]
);
// ===== FORM CONFIGURATION =====
diff --git a/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx b/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx
index 5717f4c1..d07270bd 100644
--- a/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx
+++ b/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx
@@ -8,7 +8,7 @@ import { useSearchParams } from 'next/navigation';
import Button from '@/components/Button';
import TextInput from '@/components/input/TextInput';
import NumberInput from '@/components/input/NumberInput';
-import SelectInput, { OptionType } from '@/components/input/SelectInput';
+import SelectInput from '@/components/input/SelectInput';
import {
PurchaseRequestStaffApprovalFormDefaultValues,
@@ -22,7 +22,7 @@ import {
UpdateStaffApprovalRequestPayload,
Purchase,
} from '@/types/api/purchase/purchase';
-import { router } from 'next/client';
+import { useRouter } from 'next/navigation';
interface PurchaseOrderStaffApprovalFormProps {
type?: 'add' | 'edit';
@@ -30,6 +30,7 @@ interface PurchaseOrderStaffApprovalFormProps {
onCancel?: () => void;
refreshApprovals?: () => void;
onModalClose?: () => void;
+ onRefetchData?: () => void;
}
const PurchaseOrderStaffApprovalForm = ({
@@ -38,7 +39,9 @@ const PurchaseOrderStaffApprovalForm = ({
onCancel,
refreshApprovals,
onModalClose,
+ onRefetchData,
}: PurchaseOrderStaffApprovalFormProps) => {
+ const router = useRouter();
const searchParams = useSearchParams();
const [purchaseOrderFormErrorMessage, setPurchaseOrderFormErrorMessage] =
useState('');
@@ -104,11 +107,13 @@ const PurchaseOrderStaffApprovalForm = ({
}
toast.success(res?.message as string);
refreshApprovals?.();
+ onRefetchData?.();
formik.resetForm();
onCancel?.();
onModalClose?.();
+ router.refresh();
},
- [initialValues?.id, searchParams, refreshApprovals, onModalClose]
+ [initialValues?.id, searchParams, refreshApprovals, onModalClose, onRefetchData]
);
const updateStaffApprovalHandler = useCallback(
@@ -120,12 +125,13 @@ const PurchaseOrderStaffApprovalForm = ({
}
toast.success(res?.message as string);
refreshApprovals?.();
+ onRefetchData?.();
formik.resetForm();
onCancel?.();
onModalClose?.();
- await router.push(`/purchase/detail?purchaseId=${purchaseId}`);
+ router.refresh();
},
- [refreshApprovals, onModalClose]
+ [refreshApprovals, onModalClose, onRefetchData]
);
// ===== FORM CONFIGURATION =====
diff --git a/src/components/pages/purchase/order/PurchaseOrderDetail.tsx b/src/components/pages/purchase/order/PurchaseOrderDetail.tsx
index 88f622b5..9d479e63 100644
--- a/src/components/pages/purchase/order/PurchaseOrderDetail.tsx
+++ b/src/components/pages/purchase/order/PurchaseOrderDetail.tsx
@@ -69,11 +69,13 @@ const PenerimaanBarangDropdown = ({ onEdit }: { onEdit: () => void }) => {
interface PurchaseOrderDetailProps {
type?: 'detail' | 'edit';
initialValues?: Purchase;
+ refetchData?: () => void;
}
const PurchaseOrderDetail = ({
type = 'detail',
initialValues,
+ refetchData,
}: PurchaseOrderDetailProps) => {
// ===== MODAL HOOKS =====
const searchParams = useSearchParams();
@@ -251,8 +253,9 @@ const PurchaseOrderDetail = ({
}
toast.success(res?.message as string);
refreshApprovals();
+ refetchData?.();
},
- [initialValues?.id, searchParams, refreshApprovals]
+ [initialValues?.id, searchParams, refreshApprovals, refetchData]
);
const createManagerApprovalHandler = useCallback(
@@ -276,20 +279,23 @@ const PurchaseOrderDetail = ({
return;
}
toast.success(res?.message as string);
+ refetchData?.();
},
- [initialValues?.id, searchParams]
+ [initialValues?.id, searchParams, refetchData]
);
// ===== MODAL HANDLERS =====
const handleStaffApprovalModalClose = useCallback(() => {
refreshApprovals();
+ refetchData?.();
staffApprovalModal.closeModal();
- }, [refreshApprovals]);
+ }, [refreshApprovals, refetchData]);
const handleEditModalClose = useCallback(() => {
refreshApprovals();
+ refetchData?.();
editModal.closeModal();
- }, [refreshApprovals]);
+ }, [refreshApprovals, refetchData]);
// ===== DELETE HANDLER =====
const deleteItemsHandler = useCallback(async () => {
@@ -327,6 +333,7 @@ const PurchaseOrderDetail = ({
toast.success(successMessage);
refreshApprovals();
+ refetchData?.();
deleteModal.closeModal();
setSelectedItem(null);
setRowSelection({});
@@ -335,7 +342,7 @@ const PurchaseOrderDetail = ({
} finally {
setIsDeleteLoading(false);
}
- }, [initialValues?.id, searchParams, selectedItem, selectedRowIds]);
+ }, [initialValues?.id, searchParams, selectedItem, selectedRowIds, refetchData]);
if (!initialValues) {
return null;
@@ -901,6 +908,7 @@ const PurchaseOrderDetail = ({
await createManagerApprovalHandler(payload);
await refreshApprovals();
+ await refetchData?.();
confirmationModalWithNotes.closeModal();
},
}}
@@ -923,6 +931,7 @@ const PurchaseOrderDetail = ({
onCancel={handleStaffApprovalModalClose}
refreshApprovals={refreshApprovals}
onModalClose={staffApprovalModal.closeModal}
+ onRefetchData={refetchData}
/>
@@ -940,6 +949,7 @@ const PurchaseOrderDetail = ({
onCancel={acceptApprovalModal.closeModal}
refreshApprovals={refreshApprovals}
onModalClose={acceptApprovalModal.closeModal}
+ onRefetchData={refetchData}
/>
@@ -957,6 +967,7 @@ const PurchaseOrderDetail = ({
onCancel={handleEditModalClose}
refreshApprovals={refreshApprovals}
onModalClose={editModal.closeModal}
+ onRefetchData={refetchData}
/>
@@ -974,6 +985,7 @@ const PurchaseOrderDetail = ({
onCancel={penerimaanBarangModal.closeModal}
refreshApprovals={refreshApprovals}
onModalClose={penerimaanBarangModal.closeModal}
+ onRefetchData={refetchData}
/>
@@ -996,6 +1008,7 @@ const PurchaseOrderDetail = ({
};
await createStaffApprovalHandler(payload);
+ await refetchData?.();
staffRejectionModal.closeModal();
},
}}