in src/hooks/iotc.ts [22:49]
export function useIoTCentralClient(
onConnectionRefresh?: (client: IIoTCClient) => void | Promise<void>,
): [IIoTCClient | null, any, () => void] {
const {client, setClient} = useContext(IoTCContext);
const {credentials} = useContext(StorageContext);
const previousConnectionStatus = useRef(false);
const clear = useCallback(() => {
setClient(null);
}, [setClient]);
useEffect(() => {
if (client && onConnectionRefresh) {
const id = setInterval(async () => {
const currentConnectionStatus = client.isConnected();
if (currentConnectionStatus !== previousConnectionStatus.current) {
previousConnectionStatus.current = currentConnectionStatus;
if (currentConnectionStatus) {
// only if re-connection
await onConnectionRefresh(client);
}
}
}, 3000);
return () => clearInterval(id);
}
}, [client, onConnectionRefresh]);
return [client, credentials, clear];
}