velxio/frontend/src/store/useProjectStore.ts

24 lines
695 B
TypeScript

import { create } from 'zustand';
interface CurrentProject {
id: string;
slug: string;
ownerUsername: string;
isPublic: boolean;
}
interface ProjectState {
currentProject: CurrentProject | null;
setCurrentProject: (project: CurrentProject) => void;
clearCurrentProject: () => void;
setVisibility: (isPublic: boolean) => void;
}
export const useProjectStore = create<ProjectState>((set) => ({
currentProject: null,
setCurrentProject: (project) => set({ currentProject: project }),
clearCurrentProject: () => set({ currentProject: null }),
setVisibility: (isPublic) =>
set((s) => (s.currentProject ? { currentProject: { ...s.currentProject, isPublic } } : s)),
}));