Download dashboard/src/composables/useProjects.ts from qa1145/astrbbbb: direct link, hf CLI and curl.
- Browser
- Download file 3.77 kB
-
https://huggingface.co/spaces/qa1145/astrbbbb/resolve/main/dashboard/src/composables/useProjects.ts
- Command line
-
hf download hf://spaces/qa1145/astrbbbb/dashboard/src/composables/useProjects.ts
-
curl -L -o useProjects.ts https://huggingface.co/spaces/qa1145/astrbbbb/resolve/main/dashboard/src/composables/useProjects.ts
3.77 kB
| import { ref } from 'vue'; | |
| import axios from 'axios'; | |
| import type { Project } from '@/components/chat/ProjectList.vue'; | |
| export function useProjects() { | |
| const projects = ref<Project[]>([]); | |
| const selectedProjectId = ref<string | null>(null); | |
| async function getProjects() { | |
| try { | |
| const res = await axios.get('/api/chatui_project/list'); | |
| 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 axios.post('/api/chatui_project/create', { | |
| 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 axios.post('/api/chatui_project/update', { | |
| project_id: 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 axios.get('/api/chatui_project/delete', { | |
| params: { project_id: 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 axios.post('/api/chatui_project/add_session', { | |
| session_id: sessionId, | |
| project_id: projectId | |
| }); | |
| 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 axios.post('/api/chatui_project/remove_session', { | |
| session_id: 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 axios.get('/api/chatui_project/get_sessions', { | |
| params: { project_id: 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 | |
| }; | |
| } | |