From 8637d1c2c21db93041c210314e9e203728282275 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Mon, 2 Feb 2026 15:05:47 +0700 Subject: [PATCH] refactor(FE): Handle next-day error toast visibility --- .../recording/form/RecordingForm.tsx | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/components/pages/production/recording/form/RecordingForm.tsx b/src/components/pages/production/recording/form/RecordingForm.tsx index 8f619463..6929e2f5 100644 --- a/src/components/pages/production/recording/form/RecordingForm.tsx +++ b/src/components/pages/production/recording/form/RecordingForm.tsx @@ -241,6 +241,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { new Date().toISOString().split('T')[0] ); const [duplicateErrorShown, setDuplicateErrorShown] = useState(false); + const [nextDayErrorShown, setNextDayErrorShown] = useState(false); useEffect(() => { return () => { @@ -575,10 +576,24 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { setNextDayRecording( nextDayRecordingData.data as unknown as NextDayRecording ); + if (nextDayErrorShown) { + toast.dismiss(); + setNextDayErrorShown(false); + } + } else if (nextDayRecordingData?.status === 'error') { + setNextDayRecording(null); + if (!nextDayErrorShown) { + toast.error(nextDayRecordingData.message || 'Terjadi kesalahan saat memuat data hari berikutnya', { duration: Infinity }); + setNextDayErrorShown(true); + } } else { setNextDayRecording(null); + if (nextDayErrorShown) { + toast.dismiss(); + setNextDayErrorShown(false); + } } - }, [nextDayRecordingData]); + }, [nextDayRecordingData, nextDayErrorShown]); const { rawData: eggProductsData, @@ -1315,6 +1330,10 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { toast.dismiss(); setDuplicateErrorShown(false); } + if (nextDayErrorShown) { + toast.dismiss(); + setNextDayErrorShown(false); + } setSelectedProjectFlockLocationId( location ? location.value.toString() : '' ); @@ -1335,6 +1354,10 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { toast.dismiss(); setDuplicateErrorShown(false); } + if (nextDayErrorShown) { + toast.dismiss(); + setNextDayErrorShown(false); + } }; const kandangChangeHandler = (val: OptionType | OptionType[] | null) => { @@ -1351,6 +1374,10 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { toast.dismiss(); setDuplicateErrorShown(false); } + if (nextDayErrorShown) { + toast.dismiss(); + setNextDayErrorShown(false); + } if (selectedLocation && kandang) { setStockProductsLocationId(selectedLocation.value.toString()); setStockProductsKandangId(kandang.value.toString()); @@ -1380,11 +1407,15 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { toast.dismiss(); setDuplicateErrorShown(false); } + if (nextDayErrorShown) { + toast.dismiss(); + setNextDayErrorShown(false); + } setTimeout(() => { formik.validateField('project_flock_kandang_id'); }, 0); }, - [formik, duplicateErrorShown] + [formik, duplicateErrorShown, nextDayErrorShown] ); const { formErrorList, handleFormSubmit, close } = useFormikErrorList(formik);