import { create } from 'zustand' import type { CharacterGraphData } from '@shared/types' import { ipcCall } from '@renderer/lib/ipc-client' interface GraphState { open: boolean data: CharacterGraphData | null loading: boolean filter: 'all' | 'connected' openModal: () => void close: () => void load: (bookId: string, filter?: 'all' | 'connected') => Promise setFilter: (filter: 'all' | 'connected') => void } export const useGraphStore = create((set, get) => ({ open: false, data: null, loading: false, filter: 'all', openModal: () => set({ open: true }), close: () => set({ open: false, data: null }), setFilter: (filter) => set({ filter }), load: async (bookId, filter) => { const f = filter ?? get().filter set({ loading: true }) try { const data = await ipcCall(() => window.electronAPI.graph.getData(bookId, f)) set({ data, filter: f }) } finally { set({ loading: false }) } } }))