import { ref } from 'vue'; import { chatApi } from '@/api/v1'; import type { Project } from '@/components/chat/ProjectList.vue'; export function useProjects() { const projects = ref([]); const selectedProjectId = ref(null); async function getProjects() { try { const res = await chatApi.listProjects(); if (res.data.status === 'ok') { projects.value = res.data.data || []; } } catch (error) { console.error('Failed to fetch projects:', error); } } async function createProject(title: string, emoji?: string, description?: string) { try { const res = await chatApi.createProject({ title, emoji: emoji || '📁', description }); if (res.data.status === 'ok') { await getProjects(); return res.data.data; } } catch (error) { console.error('Failed to create project:', error); } } async function updateProject(projectId: string, title?: string, emoji?: string, description?: string) { try { const res = await chatApi.updateProject(projectId, { title, emoji, description }); if (res.data.status === 'ok') { await getProjects(); } } catch (error) { console.error('Failed to update project:', error); } } async function deleteProject(projectId: string) { try { const res = await chatApi.deleteProject(projectId); if (res.data.status === 'ok') { await getProjects(); if (selectedProjectId.value === projectId) { selectedProjectId.value = null; } } } catch (error) { console.error('Failed to delete project:', error); } } async function addSessionToProject(sessionId: string, projectId: string) { try { const res = await chatApi.addProjectSession(projectId, sessionId); return res.data.status === 'ok'; } catch (error) { console.error('Failed to add session to project:', error); return false; } } async function removeSessionFromProject(sessionId: string) { try { const res = await chatApi.removeProjectSession(sessionId); return res.data.status === 'ok'; } catch (error) { console.error('Failed to remove session from project:', error); return false; } } async function getProjectSessions(projectId: string) { try { const res = await chatApi.listProjectSessions(projectId); if (res.data.status === 'ok') { return res.data.data || []; } return []; } catch (error) { console.error('Failed to fetch project sessions:', error); return []; } } return { projects, selectedProjectId, getProjects, createProject, updateProject, deleteProject, addSessionToProject, removeSessionFromProject, getProjectSessions }; }