File size: 1,257 Bytes
a21c316
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { create } from 'zustand';

export interface NetworkRequest {
  id: string;
  cmd: string;
  args?: any;
  startTime: number;
  endTime?: number;
  duration?: number;
  status: 'pending' | 'success' | 'error';
  response?: any;
  error?: any;
}

interface NetworkMonitorState {
  requests: NetworkRequest[];
  isOpen: boolean;
  isRecording: boolean;
  addRequest: (request: NetworkRequest) => void;
  updateRequest: (id: string, updates: Partial<NetworkRequest>) => void;
  clearRequests: () => void;
  setIsOpen: (isOpen: boolean) => void;
  toggleRecording: () => void;
}

export const useNetworkMonitorStore = create<NetworkMonitorState>((set) => ({
  requests: [],
  isOpen: false,
  isRecording: true,

  addRequest: (request) => set((state) => {
    if (!state.isRecording) return state;
    return { requests: [request, ...state.requests].slice(0, 100) }; // Keep last 100 requests (reduced from 1000)
  }),

  updateRequest: (id, updates) => set((state) => ({
    requests: state.requests.map((req) =>
      req.id === id ? { ...req, ...updates } : req
    ),
  })),

  clearRequests: () => set({ requests: [] }),
  setIsOpen: (isOpen) => set({ isOpen }),
  toggleRecording: () => set((state) => ({ isRecording: !state.isRecording })),
}));