From b031207239fb3a7b7cae110e9ad32aa79c699516 Mon Sep 17 00:00:00 2001 From: Sam Chau Date: Fri, 10 Jan 2025 03:13:57 +1030 Subject: [PATCH] feat: add syncConfigId state management for improved sync handling in ArrModal --- frontend/src/hooks/useArrModal.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/frontend/src/hooks/useArrModal.js b/frontend/src/hooks/useArrModal.js index 4393141..435c4e2 100644 --- a/frontend/src/hooks/useArrModal.js +++ b/frontend/src/hooks/useArrModal.js @@ -41,6 +41,7 @@ export const useArrModal = ({isOpen, onSubmit, editingArr}) => { const [isDataDrawerOpen, setIsDataDrawerOpen] = useState(false); const [showSyncConfirm, setShowSyncConfirm] = useState(false); const [isInitialSyncing, setIsInitialSyncing] = useState(false); + const [syncConfigId, setSyncConfigId] = useState(null); useEffect(() => { if (editingArr) { @@ -74,6 +75,7 @@ export const useArrModal = ({isOpen, onSubmit, editingArr}) => { setSaveConfirm(false); setTestConfirm(false); setIsDataDrawerOpen(false); + setSyncConfigId(null); }, [editingArr]); // Close drawer when switching to manual sync @@ -207,13 +209,12 @@ export const useArrModal = ({isOpen, onSubmit, editingArr}) => { : formData.data_to_sync }; - const result = editingArr + const saveResult = editingArr ? await updateArrConfig(editingArr.id, configToSave) : await saveArrConfig(configToSave); - // Handle the name conflict error specifically - if (!result.success) { - Alert.error(result.error); + if (!saveResult.success) { + Alert.error(saveResult.error); setSaveConfirm(false); return; } @@ -226,6 +227,7 @@ export const useArrModal = ({isOpen, onSubmit, editingArr}) => { // If it's not a manual sync method, show the sync confirmation if (formData.sync_method !== 'manual') { + setSyncConfigId(editingArr ? editingArr.id : saveResult.id); setShowSyncConfirm(true); } else { onSubmit(); @@ -244,7 +246,7 @@ export const useArrModal = ({isOpen, onSubmit, editingArr}) => { const handleManualSync = async () => { setIsInitialSyncing(true); try { - const configId = editingArr ? editingArr.id : result.id; + const configId = editingArr ? editingArr.id : syncConfigId; const syncResult = await triggerSync(configId); if (syncResult.success) {