export function useIoTCentralClient()

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];
}