refactor(FE): Fix dependency arrays and refactor setFieldValue usage

This commit is contained in:
rstubryan
2026-03-05 13:36:43 +07:00
parent 4a69eef294
commit a4cb4e202b
2 changed files with 16 additions and 18 deletions
@@ -531,7 +531,7 @@ const RecordingTable = () => {
useEffect(() => { useEffect(() => {
setTableState('recording-table', pathname); setTableState('recording-table', pathname);
}, [pathname]); }, [pathname, setTableState]);
const searchChangeHandler = useCallback( const searchChangeHandler = useCallback(
(e: React.ChangeEvent<HTMLInputElement>) => { (e: React.ChangeEvent<HTMLInputElement>) => {
@@ -1118,14 +1118,11 @@ const RecordingTable = () => {
}, },
], ],
[ [
isRecordingApproved,
tableFilterState.pageSize, tableFilterState.pageSize,
tableFilterState.page, tableFilterState.page,
selectedRecording,
singleDeleteModal, singleDeleteModal,
approveModal, approveModal,
rejectModal, rejectModal,
rowSelection,
setRowSelection, setRowSelection,
setApprovalNotes, setApprovalNotes,
setSelectedRecording, setSelectedRecording,
@@ -1007,6 +1007,8 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
}); });
// ===== HELPER FUNCTIONS ===== // ===== HELPER FUNCTIONS =====
const { setFieldValue } = formik;
const getAvailableStock = useCallback( const getAvailableStock = useCallback(
(productWarehouseId: number) => { (productWarehouseId: number) => {
if ((type as 'add' | 'edit' | 'detail') === 'detail') return 0; if ((type as 'add' | 'edit' | 'detail') === 'detail') return 0;
@@ -1098,16 +1100,10 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
const isAlreadyRecorded = recordedProjectFlockKandangIds.has( const isAlreadyRecorded = recordedProjectFlockKandangIds.has(
projectFlockKandangLookup.project_flock_kandang_id projectFlockKandangLookup.project_flock_kandang_id
); );
let color: 'neutral' | 'success' | 'warning' | 'error'; const color = isAlreadyRecorded ? 'warning' : 'success';
if (isAlreadyRecorded) {
color = 'warning';
} else {
color = 'success';
}
return ( return (
<span className={'whitespace-nowrap text-xs'}> <span className={`whitespace-nowrap text-xs text-${color}`}>
Periode {projectFlockKandangLookup.project_flock?.period} Periode {projectFlockKandangLookup.project_flock?.period}
</span> </span>
); );
@@ -1411,9 +1407,9 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
} }
if (formik.values.project_flock_kandang_id !== projectFlockKandangId) { if (formik.values.project_flock_kandang_id !== projectFlockKandangId) {
formik.setFieldValue('project_flock_kandang_id', projectFlockKandangId); setFieldValue('project_flock_kandang_id', projectFlockKandangId);
formik.setFieldValue('project_flock_kandang', { setFieldValue('project_flock_kandang', {
value: projectFlockKandangId, value: projectFlockKandangId,
label: projectFlockKandangLookup label: projectFlockKandangLookup
? `${projectFlockKandangLookup.project_flock.flock_name} - ${projectFlockKandangLookup.kandang.name}` ? `${projectFlockKandangLookup.project_flock.flock_name} - ${projectFlockKandangLookup.kandang.name}`
@@ -1431,6 +1427,9 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
nextDayRecording, nextDayRecording,
existingRecordings, existingRecordings,
today, today,
currentRecordDate,
duplicateErrorShown,
setFieldValue,
]); ]);
useEffect(() => { useEffect(() => {
@@ -1472,11 +1471,11 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
formik.values.project_flock_kandang_id !== formik.values.project_flock_kandang_id !==
projectFlockKandangDetail.id projectFlockKandangDetail.id
) { ) {
formik.setFieldValue( setFieldValue(
'project_flock_kandang_id', 'project_flock_kandang_id',
projectFlockKandangDetail.id projectFlockKandangDetail.id
); );
formik.setFieldValue('project_flock_kandang', { setFieldValue('project_flock_kandang', {
value: projectFlockKandangDetail.id, value: projectFlockKandangDetail.id,
label: `${projectFlock.flock_name} - ${kandang.name}`, label: `${projectFlock.flock_name} - ${kandang.name}`,
}); });
@@ -1490,6 +1489,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
type, type,
enhancedProjectFlockOptions, enhancedProjectFlockOptions,
formik.values.project_flock_kandang_id, formik.values.project_flock_kandang_id,
setFieldValue,
]); ]);
const approveHandler = async (notes: string) => { const approveHandler = async (notes: string) => {
@@ -1653,10 +1653,10 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
if (isLayingCategory && (type as 'add' | 'edit' | 'detail') !== 'detail') { if (isLayingCategory && (type as 'add' | 'edit' | 'detail') !== 'detail') {
const layingValues = formik.values as RecordingLayingFormValues; const layingValues = formik.values as RecordingLayingFormValues;
if (!layingValues.eggs || layingValues.eggs.length === 0) { if (!layingValues.eggs || layingValues.eggs.length === 0) {
formik.setFieldValue('eggs', [{ product_warehouse_id: 0, qty: '' }]); setFieldValue('eggs', [{ product_warehouse_id: 0, qty: '' }]);
} }
} }
}, [isLayingCategory, type]); }, [isLayingCategory, type, formik.values, setFieldValue]);
useEffect(() => { useEffect(() => {
if (type !== 'add') { if (type !== 'add') {
@@ -3199,6 +3199,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
pageSize={100} pageSize={100}
className={{ className={{
tableWrapperClassName: 'overflow-x-auto', tableWrapperClassName: 'overflow-x-auto',
containerClassName: 'mb-6!',
tableClassName: 'w-full table-auto text-sm', tableClassName: 'w-full table-auto text-sm',
headerRowClassName: 'border-b border-b-gray-200', headerRowClassName: 'border-b border-b-gray-200',
headerColumnClassName: headerColumnClassName: