| import { MessageType } from '@/constants/chat'; | |
| import { IConversation, IReference } from '@/interfaces/database/chat'; | |
| import { EmptyConversationId } from './constants'; | |
| import { IMessage } from './interface'; | |
| export const isConversationIdExist = (conversationId: string) => { | |
| return conversationId !== EmptyConversationId && conversationId !== ''; | |
| }; | |
| export const getDocumentIdsFromConversionReference = (data: IConversation) => { | |
| const documentIds = data.reference.reduce( | |
| (pre: Array<string>, cur: IReference) => { | |
| cur.doc_aggs | |
| ?.map((x) => x.doc_id) | |
| .forEach((x) => { | |
| if (pre.every((y) => y !== x)) { | |
| pre.push(x); | |
| } | |
| }); | |
| return pre; | |
| }, | |
| [], | |
| ); | |
| return documentIds.join(','); | |
| }; | |
| export const buildMessageItemReference = ( | |
| conversation: { message: IMessage[]; reference: IReference[] }, | |
| message: IMessage, | |
| ) => { | |
| const assistantMessages = conversation.message | |
| ?.filter((x) => x.role === MessageType.Assistant) | |
| .slice(1); | |
| const referenceIndex = assistantMessages.findIndex( | |
| (x) => x.id === message.id, | |
| ); | |
| const reference = message?.reference | |
| ? message?.reference | |
| : (conversation?.reference ?? {})[referenceIndex]; | |
| return reference; | |
| }; | |