From 0a8be603c852ff9b50938653e0f3d4d59256956e Mon Sep 17 00:00:00 2001 From: huzibaca Date: Thu, 26 Sep 2024 12:20:57 +0800 Subject: [PATCH] chore: update --- src/hooks/use-listen.ts | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/hooks/use-listen.ts b/src/hooks/use-listen.ts index 87abac39..180a0774 100644 --- a/src/hooks/use-listen.ts +++ b/src/hooks/use-listen.ts @@ -1,34 +1,31 @@ import { listen, UnlistenFn, EventCallback } from "@tauri-apps/api/event"; import { event } from "@tauri-apps/api"; +import { useRef } from "react"; export const useListen = () => { - let unlistenFns: UnlistenFn[] = []; + const unlistenFns = useRef([]); - const addListener = async function ( + const addListener = async ( eventName: string, handler: EventCallback - ) { + ) => { const unlisten = await listen(eventName, handler); - unlistenFns.push(unlisten); + unlistenFns.current.push(unlisten); return unlisten; }; - const removeAllListeners = async function () { - for (const unlisten of unlistenFns) { - Promise.resolve(unlisten()).catch(console.error); - } - unlistenFns = []; + const removeAllListeners = () => { + unlistenFns.current.forEach((unlisten) => unlisten()); + unlistenFns.current = []; }; const setupCloseListener = async function () { await event.once("tauri://close-requested", async () => { - console.log("Window close requested."); - await removeAllListeners(); + removeAllListeners(); }); }; return { addListener, - removeAllListeners, setupCloseListener, }; };