Files
xiaoxia-saas/apps/web/src/store/workspaceStore.ts
T

44 lines
1.1 KiB
TypeScript

/**
* 工作空间状态管理
*/
import { create } from 'zustand';
import { Workspace } from '@/api/workspace';
interface WorkspaceState {
currentWorkspace: Workspace | null;
workspaces: Workspace[];
// Actions
setCurrentWorkspace: (workspace: Workspace | null) => void;
setWorkspaces: (workspaces: Workspace[]) => void;
addWorkspace: (workspace: Workspace) => void;
removeWorkspace: (workspaceId: string) => void;
}
export const useWorkspaceStore = create<WorkspaceState>((set) => ({
currentWorkspace: null,
workspaces: [],
setCurrentWorkspace: (workspace) => {
set({ currentWorkspace: workspace });
},
setWorkspaces: (workspaces) => {
set({ workspaces });
},
addWorkspace: (workspace) => {
set((state) => ({
workspaces: [...state.workspaces, workspace],
}));
},
removeWorkspace: (workspaceId) => {
set((state) => ({
workspaces: state.workspaces.filter((w) => w.id !== workspaceId),
currentWorkspace:
state.currentWorkspace?.id === workspaceId ? null : state.currentWorkspace,
}));
},
}));