diff --git a/apps/desktop/electron/preload.ts b/apps/desktop/electron/preload.ts index ee7474c..e2d8438 100644 --- a/apps/desktop/electron/preload.ts +++ b/apps/desktop/electron/preload.ts @@ -20,4 +20,8 @@ contextBridge.exposeInMainWorld("ipcRenderer", { const [channel, ...omit] = args; return ipcRenderer.invoke(channel, ...omit); }, + once: (...args: Parameters) => { + const [channel, ...omit] = args; + return ipcRenderer.once(channel, ...omit); + }, }); diff --git a/apps/desktop/src/pages/Datasource/index.tsx b/apps/desktop/src/pages/Datasource/index.tsx index 9b559cf..1f8ffd5 100644 --- a/apps/desktop/src/pages/Datasource/index.tsx +++ b/apps/desktop/src/pages/Datasource/index.tsx @@ -2,37 +2,34 @@ import { Button } from "@/components/ui/button"; import { useEffect, useState } from "react"; interface ScanProgress { - percentage: number + percentage: number; } export const Datasource = () => { - const [progress, setProgress] = useState() - const [result, setResult] = useState() + const [progress, setProgress] = useState(); + const [result, setResult] = useState(); useEffect(() => { - window.ipcRenderer.on('scan-progress', (event, data) => { - setProgress(data) + const handleScanProgress = (event, data) => { + setProgress(data); if (data.error) return; - }); - + }; + window.ipcRenderer.on("scan-progress", handleScanProgress); return () => { - window.ipcRenderer.off('scan-progress', () => { }); + window.ipcRenderer.off("scan-progress", handleScanProgress); }; }, []); useEffect(() => { - window.ipcRenderer.on('scan-progress-done', (event, data) => { - console.log('%capps\desktop\src\pages\Datasource\index.tsx:25 data', 'color: #007acc;', data); - setResult(data) + console.log(1111); + const handleScanFinished = (event, data) => { + console.log(data); + setResult(data); if (data.error) return; - }); - - return () => { - window.ipcRenderer.off('scan-progress-done', () => { }); }; + window.ipcRenderer.once("scan-progress-done", handleScanFinished); }, []); - return (