@@ -24,9 +24,10 @@ import {
2424 updateConversationAtom ,
2525 updateConversationWaitingForResponseAtom ,
2626} from '@/helpers/atoms/Conversation.atom'
27- import { toChatMessage } from '@/models/ChatMessage'
27+ import { MessageSenderType , toChatMessage } from '@/models/ChatMessage'
2828
2929import { pluginManager } from '@/plugin/PluginManager'
30+ import { ChatMessage , Conversation } from '@/types/chatMessage'
3031
3132export default function useSendChatMessage ( ) {
3233 const currentConvo = useAtomValue ( currentConversationAtom )
@@ -73,16 +74,13 @@ export default function useSendChatMessage() {
7374 ...updatedConv ,
7475 name : updatedConv . name ?? '' ,
7576 message : updatedConv . lastMessage ?? '' ,
76- messages : currentMessages . map < Message > ( ( e : ChatMessage ) => {
77- return {
78- // eslint-disable-next-line @typescript-eslint/naming-convention
79- _id : e . id ,
80- message : e . text ,
81- user : e . senderUid ,
82- updatedAt : new Date ( e . createdAt ) . toISOString ( ) ,
83- createdAt : new Date ( e . createdAt ) . toISOString ( ) ,
84- }
85- } ) ,
77+ messages : currentMessages . map < Message > ( ( e : ChatMessage ) => ( {
78+ _id : e . id ,
79+ message : e . text ,
80+ user : e . senderUid ,
81+ updatedAt : new Date ( e . createdAt ) . toISOString ( ) ,
82+ createdAt : new Date ( e . createdAt ) . toISOString ( ) ,
83+ } ) ) ,
8684 } )
8785 }
8886 } , 1000 )
@@ -98,16 +96,14 @@ export default function useSendChatMessage() {
9896
9997 const prompt = currentPrompt . trim ( )
10098 const messageHistory : MessageHistory [ ] = currentMessages
101- . map ( ( msg ) => {
102- return {
103- role : msg . senderUid === 'user' ? 'user' : 'assistant' ,
104- content : msg . text ?? '' ,
105- }
106- } )
99+ . map ( ( msg ) => ( {
100+ role : msg . senderUid ,
101+ content : msg . text ?? '' ,
102+ } ) )
107103 . reverse ( )
108104 . concat ( [
109105 {
110- role : 'user' ,
106+ role : MessageSenderType . User ,
111107 content : prompt ,
112108 } as MessageHistory ,
113109 ] )
@@ -116,14 +112,19 @@ export default function useSendChatMessage() {
116112 _id : generateMessageId ( ) ,
117113 conversationId : convoId ,
118114 message : prompt ,
119- user : 'user' ,
115+ user : MessageSenderType . User ,
120116 createdAt : new Date ( ) . toISOString ( ) ,
121117 history : messageHistory ,
122118 }
123119
124120 const newChatMessage = toChatMessage ( newMessage )
125121 addNewMessage ( newChatMessage )
126122
123+ // delay randomly from 50 - 100ms
124+ // to prevent duplicate message id
125+ const delay = Math . floor ( Math . random ( ) * 50 ) + 50
126+ await new Promise ( ( resolve ) => setTimeout ( resolve , delay ) )
127+
127128 events . emit ( EventName . OnNewMessageRequest , newMessage )
128129 if ( ! currentConvo ?. summary && currentConvo ) {
129130 const updatedConv : Conversation = {
0 commit comments