From 9a7571f8320994dddd8b512b9008ddc77c471e11 Mon Sep 17 00:00:00 2001 From: CakeCN Date: Fri, 12 Dec 2025 00:55:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0function=20approval=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Html/apps/static/js/chatbox.js | 107 +++++++++++++++------------------ 1 file changed, 47 insertions(+), 60 deletions(-) diff --git a/Html/apps/static/js/chatbox.js b/Html/apps/static/js/chatbox.js index 8e13dbd..2a70e41 100644 --- a/Html/apps/static/js/chatbox.js +++ b/Html/apps/static/js/chatbox.js @@ -112,71 +112,58 @@ document.addEventListener('DOMContentLoaded', function () { // 滚动到最新消息 document.getElementById('chatbox').scrollTop = document.getElementById('chatbox').scrollHeight; }); - // 创建批准消息 - function createApproveMessage(element) { - const funcName = element.data.name; - - // 移除已存在的相同函数批准消息 - if (activeApprovals.hasOwnProperty(funcName)) { - document.querySelectorAll(`.approve-message[data-function="${funcName}"]`).forEach(el => el.remove()); - } - activeApprovals[funcName] = Date.now(); - - const requestMessage = document.createElement('div'); - requestMessage.className = 'chat-message server-message approve-message'; - requestMessage.setAttribute('data-function', funcName); - - const description = document.createElement('div'); - const argsDescription = JSON.stringify(element.data.args); - description.innerHTML = `Function: ${element.data.name}(${argsDescription || ''})`; - - const approveButton = document.createElement('button'); - approveButton.innerHTML = ''; - approveButton.data = element; - approveButton.className = 'approve-button'; - approveButton.onclick = function (event) { - socket.emit('message', JSON.stringify({ type: 'function', data: element })); - event.currentTarget.disabled = true; - event.currentTarget.classList.add('disabled'); - }; - - requestMessage.appendChild(description); - requestMessage.appendChild(approveButton); - - return requestMessage; - } - - // 获取聊天框元素 - function getChatbox() { - return document.getElementById('chatbox'); - } - - // 滚动聊天框到底部 - function scrollChatboxToBottom() { - const chatbox = getChatbox(); - chatbox.scrollTop = chatbox.scrollHeight; - } - socket.on('request_function', function(data){ try { console.log("request_function", data); - // 统一数据格式为数组 - const requests = typeof data === 'string' ? JSON.parse(data) : data; - const requestArray = Array.isArray(requests) ? requests : [requests]; - + if (typeof data === 'string') { + data = JSON.parse(data); + } + if (typeof data === 'object') { + data = [data]; + } cleanupExpiredApprovals();// 先清理一次过期记录 - - const chatbox = getChatbox(); - - // 批量处理所有请求 - requestArray.forEach(element => { - const approveMessage = createApproveMessage(element); - chatbox.appendChild(approveMessage); - }); - - scrollChatboxToBottom(); + for (let i = 0; i < data.length; i++) { + const element = data[i]; + const funcName = element.data.name; + + if (activeApprovals.hasOwnProperty(funcName)) { + // 如果存在,找到并移除之前的元素 + const existingElements = document.querySelectorAll(`.approve-message[data-function="${funcName}"]`); + existingElements.forEach(el => el.remove()); + } + activeApprovals[funcName] = Date.now(); + + const requestMessage = document.createElement('div'); + requestMessage.className = 'chat-message server-message approve-message'; + requestMessage.setAttribute('data-function', funcName); + + const description = document.createElement('div'); + const argsDescription = JSON.stringify(element.data.args); + if (argsDescription) { + description.innerHTML = `Function: ${element.data.name}(${argsDescription})`; + }else { + description.innerHTML = `Function: ${element.data.name}()`; + } + + const approveButton = document.createElement('button'); + approveButton.innerHTML = ''; + approveButton.data = element; + approveButton.className = 'approve-button'; + approveButton.onclick = function (event) { + console.log(element); + socket.emit('message', JSON.stringify({ type: 'function', data: element })); + event.currentTarget.disabled = true; + event.currentTarget.classList.add('disabled'); + }; + requestMessage.appendChild(description); + requestMessage.appendChild(approveButton); + + document.getElementById('chatbox').appendChild(requestMessage); + document.getElementById('chatbox').scrollTop = document.getElementById('chatbox').scrollHeight; + } + } catch (error) { - console.error("Error handling request_function:", error); + console.log(error) } }); socket.on('next_chapter', function (data) {