From c225658d15114b96d91da399a186771590193373 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Wed, 5 Jul 2023 19:02:18 +0000 Subject: [PATCH] added `useWsEvents` hooks --- packages/app/src/hooks/useWsEvents/index.js | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 packages/app/src/hooks/useWsEvents/index.js diff --git a/packages/app/src/hooks/useWsEvents/index.js b/packages/app/src/hooks/useWsEvents/index.js new file mode 100644 index 00000000..099b7220 --- /dev/null +++ b/packages/app/src/hooks/useWsEvents/index.js @@ -0,0 +1,34 @@ +import React from "react" + +export default ( + wsEvents, + { + socketName + } = {} +) => { + function registerEvents() { + for (const [eventName, eventHandler] of Object.entries(wsEvents)) { + app.cores.api.listenEvent(eventName, eventHandler, socketName) + } + } + + function unregisterEvents() { + for (const [eventName, eventHandler] of Object.entries(wsEvents)) { + app.cores.api.unlistenEvent(eventName, eventHandler, socketName) + } + } + + React.useEffect(() => { + if (typeof wsEvents === "function") { + wsEvents = [wsEvents] + } + + registerEvents() + + return () => { + unregisterEvents() + } + }, []) + + return wsEvents +} \ No newline at end of file