diff --git a/src/app/dashboard/settings/_components/settings-content.tsx b/src/app/dashboard/settings/_components/settings-content.tsx index 1169920..d651251 100644 --- a/src/app/dashboard/settings/_components/settings-content.tsx +++ b/src/app/dashboard/settings/_components/settings-content.tsx @@ -102,28 +102,22 @@ export function SettingsContent() { enabled: false, }); - // Handle export data success/error - React.useEffect(() => { - if (exportDataQuery.data && !exportDataQuery.isFetching) { - const blob = new Blob([JSON.stringify(exportDataQuery.data, null, 2)], { - type: "application/json", - }); - const url = URL.createObjectURL(blob); - const a = document.createElement("a"); - a.href = url; - a.download = `beenvoice-backup-${new Date().toISOString().split("T")[0]}.json`; - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - URL.revokeObjectURL(url); + // Handle download logic + const handleDownload = React.useCallback((data: unknown) => { + const blob = new Blob([JSON.stringify(data, null, 2)], { + type: "application/json", + }); + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = `beenvoice-backup-${new Date().toISOString().split("T")[0]}.json`; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + URL.revokeObjectURL(url); - toast.success("Data backup downloaded successfully"); - } - - if (exportDataQuery.error) { - toast.error(`Export failed: ${exportDataQuery.error.message}`); - } - }, [exportDataQuery.data, exportDataQuery.isFetching, exportDataQuery.error]); + toast.success("Data backup downloaded successfully"); + }, []); const importDataMutation = api.settings.importData.useMutation({ onSuccess: (result) => { @@ -179,8 +173,17 @@ export function SettingsContent() { }); }; - const handleExportData = () => { - void exportDataQuery.refetch(); + const handleExportData = async () => { + try { + const result = await exportDataQuery.refetch(); + if (result.data) { + handleDownload(result.data); + } + } catch (error) { + toast.error( + `Export failed: ${error instanceof Error ? error.message : "Unknown error"}`, + ); + } }; // Type guard for backup data @@ -355,10 +358,10 @@ export function SettingsContent() { return (