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