Files
cameleer-server/ui/src/stores/tracing-store.ts

25 lines
792 B
TypeScript
Raw Normal View History

import { create } from 'zustand'
interface TracingState {
tracedProcessors: Record<string, Set<string>>
isTraced: (appRoute: string, processorId: string) => boolean
toggleProcessor: (appRoute: string, processorId: string) => Set<string>
}
export const useTracingStore = create<TracingState>((set, get) => ({
tracedProcessors: {},
isTraced: (appRoute, processorId) =>
get().tracedProcessors[appRoute]?.has(processorId) ?? false,
toggleProcessor: (appRoute, processorId) => {
const current = new Set(get().tracedProcessors[appRoute] ?? [])
if (current.has(processorId)) current.delete(processorId)
else current.add(processorId)
set((state) => ({
tracedProcessors: { ...state.tracedProcessors, [appRoute]: current },
}))
return current
},
}))