1
0
mirror of https://gitlab.nic.cz/turris/reforis/foris-js.git synced 2025-04-20 08:16:38 +02:00
Stepan Henek bb5177e858
Using socket.io for websocket handling and make reforis configurable
Socket.io wrapper is used to handle websockets now,
this means that websocket logic had to be redone.

Also it is necessary to set `REFORIS_PREFIX` env variable
during the build process. To set the path of backend url.
It was previously fixed to `/reforis`.
2023-01-31 11:15:52 +01:00

44 lines
1.2 KiB
JavaScript

/*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
*
* This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information.
*/
import { useEffect, useState } from "react";
export function useWSForisModule(
ws,
module,
action = "update_settings",
controllerID
) {
const [data, setData] = useState(null);
useEffect(() => {
// Sometimes we want to disable this hook if WS is not passed. We can't make conditional
// hooks, but we can disable it here. It's used especially in ForisForm when a module
// doesn't present any WS endpoint.
if (!ws) return;
function callback(message) {
// Accept only messages addressed to device with passed controller ID.
if (
controllerID !== undefined &&
controllerID !== message.controller_id
) {
return;
}
setData(message.data);
}
ws.bind(module, action, callback);
return () => {
ws.unbind(module, action, callback);
};
}, [action, module, ws, controllerID]);
return [data];
}