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 })),
}));
|