import { create } from "zustand"; import { createJSONStorage, persist } from "zustand/middleware"; import type { ProjectStatus, ProjectPriority } from "../types"; import { createWorkspaceAwareStorage, registerForWorkspaceRehydration } from "../platform/workspace-storage"; import { defaultStorage } from "../platform/storage"; interface ProjectDraft { title: string; description: string; status: ProjectStatus; priority: ProjectPriority; leadType?: "member" | "agent"; leadId?: string; icon?: string; } const EMPTY_DRAFT: ProjectDraft = { title: "", description: "", status: "planned", priority: "none", leadType: undefined, leadId: undefined, icon: undefined, }; interface ProjectDraftStore { draft: ProjectDraft; setDraft: (patch: Partial) => void; clearDraft: () => void; hasDraft: () => boolean; } export const useProjectDraftStore = create()( persist( (set, get) => ({ draft: { ...EMPTY_DRAFT }, setDraft: (patch) => set((s) => ({ draft: { ...s.draft, ...patch } })), clearDraft: () => set({ draft: { ...EMPTY_DRAFT } }), hasDraft: () => { const { draft } = get(); return !!(draft.title || draft.description); }, }), { name: "multica_project_draft", storage: createJSONStorage(() => createWorkspaceAwareStorage(defaultStorage)), }, ), ); registerForWorkspaceRehydration(() => useProjectDraftStore.persist.rehydrate());