refactor(FE): Handle next-day error toast visibility

This commit is contained in:
rstubryan
2026-02-02 15:05:47 +07:00
parent 68feef77fc
commit 8637d1c2c2
@@ -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);