feat(FE-208): add refetchData prop to PurchaseOrderDetail and related forms for improved data synchronization

This commit is contained in:
rstubryan
2025-11-21 18:18:40 +07:00
parent c74733430b
commit 95a7afdaa6
4 changed files with 45 additions and 15 deletions
@@ -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 =====
@@ -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 =====