Spaces:
Paused
Paused
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; | |
}; | |