25 lines
792 B
TypeScript
25 lines
792 B
TypeScript
|
|
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
|
||
|
|
},
|
||
|
|
}))
|