Files
artagents/app/composables/chat.ts

55 lines
1.1 KiB
TypeScript

import type { Message } from 'ai'
export async function useChatFile() {
const toast = useToast()
async function loadChat(slug: string): Promise<Message[]> {
if (!slug) {
throw createError({
statusCode: 400,
statusMessage: 'Slug is required',
message: 'Slug is required',
})
}
const { blobs } = await $fetch('/api/files')
if (!blobs.find(item => item.pathname === `chats/${slug}.json`)) {
await createChat(slug)
}
const data = await $fetch<string>(`/api/chats/${slug}`)
const dataString = JSON.stringify(data)
if (dataString === '[]')
return []
return JSON.parse(dataString)
}
async function createChat(slug: string) {
await $fetch('/api/chats', {
method: 'POST',
body: {
file: {
name: `${slug}.json`,
content: '[]',
},
},
})
}
async function deleteChat(slug: string) {
await $fetch('/api/files', {
method: 'DELETE',
body: {
pathname: `chats/${slug}.json`,
},
})
}
return {
loadChat,
createChat,
deleteChat,
}
}