All files / kernel-ui/src/hooks useStream.ts

100% Statements 5/5
100% Branches 0/0
100% Functions 3/3
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32                                4x         4x 2x     1x       4x    
import { useState, useEffect } from 'react';
 
import { setupStream } from '../services/stream.ts';
import type { CallKernelMethod } from '../services/stream.ts';
 
export type StreamState = {
  callKernelMethod?: CallKernelMethod;
  error?: Error;
};
 
/**
 * Hook to setup the stream and provide a callKernelMethod function.
 *
 * @returns The stream state.
 */
export function useStream(): StreamState {
  const [state, setState] = useState<StreamState>({});
 
  /**
   * Effect to setup the stream and provide a callKernelMethod function.
   */
  useEffect(() => {
    setupStream()
      .then(setState)
      .catch((error: Error) => {
        setState({ error });
      });
  }, []);
 
  return state;
}