@@ -25,18 +25,34 @@ export default function Chatbot(props: ChatbotProps) {
2525 if ( index < responseText . length ) {
2626 const nextIndex = index + 1 ;
2727 const currentTypedText = responseText . substring ( 0 , nextIndex ) ;
28-
2928 if ( index === 0 ) {
3029 const date = new Date ( ) ;
3130 const datetime = `${ date . toLocaleDateString ( ) } ${ date . toLocaleTimeString ( ) } ` ;
32- setListMessages ( ( msgs ) => [
33- ...msgs ,
34- { id : Date . now ( ) , user : 'chatbot' , message : currentTypedText , datetime : datetime , isTyping : true } ,
35- ] ) ;
31+ if ( responseText . length <= 1 ) {
32+ setListMessages ( ( msgs ) => [
33+ ...msgs ,
34+ { id : Date . now ( ) , user : 'chatbot' , message : currentTypedText , datetime : datetime , isTyping : true } ,
35+ ] ) ;
36+ } else {
37+ setListMessages ( ( msgs ) => {
38+ const lastmsg = { ...msgs [ msgs . length - 1 ] } ;
39+ lastmsg . id = Date . now ( ) ;
40+ lastmsg . user = "chatbot" ;
41+ lastmsg . message = currentTypedText ;
42+ lastmsg . datetime = datetime ;
43+ lastmsg . isTyping = true ;
44+ return msgs . map ( ( msg , index ) => {
45+ if ( index === msgs . length - 1 ) {
46+ return lastmsg
47+ } else {
48+ return msg ;
49+ }
50+ } )
51+ } ) ;
52+ }
3653 } else {
3754 setListMessages ( ( msgs ) => msgs . map ( ( msg ) => ( msg . isTyping ? { ...msg , message : currentTypedText } : msg ) ) ) ;
3855 }
39-
4056 setTimeout ( ( ) => simulateTypingEffect ( responseText , nextIndex ) , 20 ) ;
4157 } else {
4258 setListMessages ( ( msgs ) => msgs . map ( ( msg ) => ( msg . isTyping ? { ...msg , isTyping : false } : msg ) ) ) ;
@@ -56,6 +72,7 @@ export default function Chatbot(props: ChatbotProps) {
5672 try {
5773 setLoading ( true )
5874 setInputMessage ( '' ) ;
75+ simulateTypingEffect ( " " ) ;
5976 const chatresponse = await chatBotAPI ( userCredentials , model , inputMessage ) ;
6077 chatbotReply = chatresponse ?. data ?. message ;
6178 simulateTypingEffect ( chatbotReply ) ;
@@ -81,7 +98,7 @@ export default function Chatbot(props: ChatbotProps) {
8198 < div className = 'flex overflow-y-auto pb-12 min-w-full' style = { { scrollbarWidth : 'thin' , overflowX : 'hidden' } } >
8299 < Widget className = 'n-bg-palette-neutral-bg-weak' header = '' isElevated = { false } >
83100 < div className = 'flex flex-col gap-4 gap-y-4' >
84- { listMessages . map ( ( chat ) => (
101+ { listMessages . map ( ( chat , index ) => (
85102 < div
86103 ref = { messagesEndRef }
87104 key = { chat . id }
@@ -118,7 +135,7 @@ export default function Chatbot(props: ChatbotProps) {
118135 className = { `p-4 self-start ${ chat . user === 'chatbot' ? 'n-bg-palette-neutral-bg-strong' : 'n-bg-palette-primary-bg-weak'
119136 } `}
120137 >
121- < div >
138+ < div className = { ` ${ ( loading && index === listMessages . length - 1 && chat . user == "chatbot" ) ? "loader" : "" } ` } >
122139 { chat . message . split ( / ` ( .+ ?) ` / ) . map ( ( part , index ) =>
123140 index % 2 === 1 ? (
124141 < span key = { index } style = { formattedTextStyle } >
0 commit comments