File size: 815 Bytes
f568a4f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { useState, useEffect } from 'react';
import { dataStreamMonitor, DataStreamMonitorState } from '@/core/dataStreamMonitor';

export function useDataStreamMonitor() {
  const [state, setState] = useState<DataStreamMonitorState>(dataStreamMonitor.getState());

  useEffect(() => {
    const unsubscribe = dataStreamMonitor.subscribe(setState);
    return unsubscribe;
  }, []);

  return {
    streams: state.streams,
    stats: state.stats,
    totalRequests: state.totalRequests,
    totalErrors: state.totalErrors,
    overallHealth: state.overallHealth,
    lastUpdate: state.lastUpdate,
    healthyEndpoints: dataStreamMonitor.getHealthyEndpoints(),
    unhealthyEndpoints: dataStreamMonitor.getUnhealthyEndpoints(),
    clearHistory: () => dataStreamMonitor.clearHistory(),
  };
}