clash-verge-rev/src/hooks/use-listen.ts
huzibaca dde7ead751
Merge branch 'fix-migrate-tauri2-errors'
* fix-migrate-tauri2-errors: (288 commits)

# Conflicts:
#	.github/ISSUE_TEMPLATE/bug_report.yml
2024-11-24 00:14:46 +08:00

32 lines
793 B
TypeScript

import { listen, UnlistenFn, EventCallback } from "@tauri-apps/api/event";
import { event } from "@tauri-apps/api";
import { useRef } from "react";
export const useListen = () => {
const unlistenFns = useRef<UnlistenFn[]>([]);
const addListener = async <T>(
eventName: string,
handler: EventCallback<T>,
) => {
const unlisten = await listen(eventName, handler);
unlistenFns.current.push(unlisten);
return unlisten;
};
const removeAllListeners = () => {
unlistenFns.current.forEach((unlisten) => unlisten());
unlistenFns.current = [];
};
const setupCloseListener = async function () {
await event.once("tauri://close-requested", async () => {
removeAllListeners();
});
};
return {
addListener,
setupCloseListener,
};
};