Files
artchat/app/composables/chat.ts

39 lines
1015 B
TypeScript

import { ChatFetchState, ChatMessages, ChatSender, ChatType } from '~~/types/chat'
export function useChat() {
const { addMessage, checkForDuplicateMessages, deleteMessage, cleanDuplicatedMessages } = useChatStore()
async function submitMessage(type: ChatType, prompt: string, fetchStates: ChatFetchState[]) {
const duplicates = checkForDuplicateMessages(type)
addMessage(
type,
prompt,
ChatSender.USER,
[],
)
await new Promise(resolve => setTimeout(resolve, 700))
if (duplicates.length > 0) {
duplicates.forEach(msg => deleteMessage(msg.id, msg.type))
cleanDuplicatedMessages()
addMessage(
ChatType.DUPLICATED,
'',
ChatSender.ARTHUR,
[ChatFetchState.THINKING, ChatFetchState.DONE],
)
await new Promise(resolve => setTimeout(resolve, 700))
}
addMessage(
type,
'',
ChatSender.ARTHUR,
fetchStates,
)
}
return {
messages: ChatMessages,
submitMessage,
}
}