learning_ai_notes/mobile/src/store/workspace-store.ts
2026-03-10 17:09:16 -07:00

31 lines
922 B
TypeScript

import { create } from 'zustand';
import { listWorkspaces, type MobileWorkspace } from '../api/workspaces';
export type WorkspaceState = {
workspaces: MobileWorkspace[];
activeWorkspaceId: string | null;
hydrate: () => Promise<void>;
setActiveWorkspace: (id: string | null) => void;
};
export const useWorkspaceStore = create<WorkspaceState>((set, get) => ({
workspaces: [],
activeWorkspaceId: null,
async hydrate() {
const workspaces = await listWorkspaces();
const currentActiveWorkspaceId = get().activeWorkspaceId;
set({
workspaces,
activeWorkspaceId:
currentActiveWorkspaceId === null
? null
: workspaces.some((workspace) => workspace.id === currentActiveWorkspaceId)
? currentActiveWorkspaceId
: workspaces[0]?.id ?? null,
});
},
setActiveWorkspace(id: string | null) {
set({ activeWorkspaceId: id });
},
}));