'use client' import { Check, ChevronDown, Home, Plus } from 'lucide-react' import { useState } from 'react' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/primitives/dropdown-menu' import { cn } from '@/lib/utils' import { useProjectStore } from '../lib/projects/store' import { NewProjectDialog } from './new-project-dialog' /** * ProjectDropdown - Shows active project and allows switching between projects * Note: useProjectScene() is called in the Editor component, not here. * Having it in both places caused duplicate subscriptions and 2x server action calls. */ export function ProjectDropdown() { // Use project store const projects = useProjectStore((state) => state.projects) const activeProject = useProjectStore((state) => state.activeProject) const isLoading = useProjectStore((state) => state.isLoading) const setActiveProject = useProjectStore((state) => state.setActiveProject) const fetchProjects = useProjectStore((state) => state.fetchProjects) const [isNewProjectDialogOpen, setIsNewProjectDialogOpen] = useState(false) const handleProjectSelect = async (projectId: string) => { await setActiveProject(projectId) } const handleAddNew = () => { setIsNewProjectDialogOpen(true) } const handleProjectCreated = async (projectId: string) => { // Set the newly created project as active (this will also fetch projects) await setActiveProject(projectId) } return ( <> {activeProject ? activeProject.name : projects.length > 0 ? 'Select Project' : 'Add Project'} {/* Project list */} {projects.length > 0 ? ( {projects.map((project) => ( activeProject?.id === project.id ? null : handleProjectSelect(project.id) } > {project.name} {activeProject?.id === project.id && ( )} ))} ) : ( No projects yet )} {/* Add new project option */} Add new project > ) }