SimpleChatTCRV:CMOptimisedShow: User respones

Now even the user response handling flow (handle_user_submit) has
been updated to use the optimised chat show logic which adjusts
/ updates the chat session ui wrt the last two messages only and
not the full chat history in the chat session.

Move the logic wrt last two messages and ui, into its own func
and inturn use it everywhere as required.
This commit is contained in:
hanishkvc 2025-11-15 15:05:28 +05:30
parent 3e20b5c680
commit a2698d0521
1 changed files with 27 additions and 12 deletions

View File

@ -1347,6 +1347,30 @@ class MultiChatUI {
return true
}
/**
* Adjust and update chat session ui wrt the last two messages
* in specified chat session, if current.
*
* The last but one chat message needs to be already in the chat session ui.
* The last chat message shouldnt be already in the chat session ui.
*
* @param {string} chatId
*/
chatmsg_ui_updateprev_appendlast(chatId) {
let chat = this.simpleChats[chatId];
if (chat.chatId != this.curChatId) {
return false
}
let prevLastMsg = chat.xchat[chat.xchat.length-2]
let msg = chat.xchat[chat.xchat.length-1]
if (prevLastMsg) {
this.ui_chatmessage_delete(chat.chatId, prevLastMsg.uniqId, false)
this.show_message(this.elDivChat, prevLastMsg, 1, msg)
}
this.show_message(this.elDivChat, msg, 0, undefined)
return true
}
/**
* Add a chatmsg to specified chat session.
* Update the chat session ui, if current.
@ -1360,16 +1384,7 @@ class MultiChatUI {
return { added: false, shown: false }
}
chat.add(msg)
if (chatId != this.curChatId) {
return { added: true, shown: false }
}
let prevLastMsg = chat.xchat[chat.xchat.length-2]
if (prevLastMsg) {
this.ui_chatmessage_delete(chatId, prevLastMsg.uniqId, false)
this.show_message(this.elDivChat, prevLastMsg, 1, msg)
}
this.show_message(this.elDivChat, msg, 0, undefined)
return { added: true, shown: true }
return { added: true, shown: this.chatmsg_ui_updateprev_appendlast(chat.chatId) }
}
/**
@ -1574,7 +1589,7 @@ class MultiChatUI {
if (this.elInUser.dataset.placeholder) {
this.elInUser.placeholder = this.elInUser.dataset.placeholder;
}
this.chat_show(chat.chatId);
this.chatmsg_ui_updateprev_appendlast(chat.chatId)
this.elInUser.dataset.role = ""
this.elInUser.value = "working...";
@ -1583,7 +1598,7 @@ class MultiChatUI {
try {
let theResp = await chat.handle_chat_hs(this.me.baseURL, apiEP, this.elDivChat)
if (chatId == this.curChatId) {
this.chat_show(chatId);
this.chatmsg_ui_updateprev_appendlast(chatId);
if ((theResp.trimmedContent) && (theResp.trimmedContent.length > 0)) {
let p = ui.el_create_append_p(`TRIMMED:${theResp.trimmedContent}`, this.elDivChat);
p.className="role-trim";