Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b573638bf8 |
@@ -171,6 +171,7 @@
|
|||||||
let agents = [];
|
let agents = [];
|
||||||
let quickPhrases = [];
|
let quickPhrases = [];
|
||||||
let lastUserMessage = null; // 存储最后一条用户消息,用于重新生成
|
let lastUserMessage = null; // 存储最后一条用户消息,用于重新生成
|
||||||
|
let isRegenerating = false; // 标志:正在重新生成,跳过用户消息显示
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
loadAgents();
|
loadAgents();
|
||||||
@@ -240,7 +241,10 @@
|
|||||||
case 'stream_end': document.getElementById('sendBtn').disabled = false; break;
|
case 'stream_end': document.getElementById('sendBtn').disabled = false; break;
|
||||||
case 'user_message':
|
case 'user_message':
|
||||||
lastUserMessage = data.message.content; // 存储最后一条用户消息
|
lastUserMessage = data.message.content; // 存储最后一条用户消息
|
||||||
appendMessage('user', data.message.content);
|
if (!isRegenerating) {
|
||||||
|
appendMessage('user', data.message.content);
|
||||||
|
}
|
||||||
|
isRegenerating = false; // 重置标志
|
||||||
break;
|
break;
|
||||||
case 'assistant_message': appendMessage('assistant', data.message.content, data.message.thinking_content, data.message.agent_name); document.getElementById('sendBtn').disabled = false; break;
|
case 'assistant_message': appendMessage('assistant', data.message.content, data.message.thinking_content, data.message.agent_name); document.getElementById('sendBtn').disabled = false; break;
|
||||||
case 'error': showError(data.message); document.getElementById('sendBtn').disabled = false; break;
|
case 'error': showError(data.message); document.getElementById('sendBtn').disabled = false; break;
|
||||||
@@ -313,24 +317,44 @@
|
|||||||
|
|
||||||
function copyMessage(btn) {
|
function copyMessage(btn) {
|
||||||
// 从隐藏input获取原始内容
|
// 从隐藏input获取原始内容
|
||||||
const hiddenInput = btn.closest('.message-body').querySelector('.copy-source');
|
const actionsDiv = btn.parentElement;
|
||||||
|
const messageBody = actionsDiv.parentElement;
|
||||||
|
const hiddenInput = messageBody.querySelector('.copy-source');
|
||||||
if (!hiddenInput) {
|
if (!hiddenInput) {
|
||||||
console.error('找不到复制源');
|
console.error('找不到复制源');
|
||||||
|
btn.innerHTML = '<i class="ri-error-line"></i> 失败';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const text = hiddenInput.value;
|
const text = hiddenInput.value;
|
||||||
|
|
||||||
navigator.clipboard.writeText(text).then(() => {
|
// 使用传统复制方法(兼容性更好)
|
||||||
btn.innerHTML = '<i class="ri-check-line"></i> 已复制';
|
const textarea = document.createElement('textarea');
|
||||||
btn.classList.add('copied');
|
textarea.value = text;
|
||||||
setTimeout(() => {
|
textarea.style.position = 'fixed';
|
||||||
btn.innerHTML = '<i class="ri-file-copy-line"></i> 复制';
|
textarea.style.left = '-9999px';
|
||||||
btn.classList.remove('copied');
|
textarea.style.top = '0';
|
||||||
}, 2000);
|
document.body.appendChild(textarea);
|
||||||
}).catch(err => {
|
textarea.focus();
|
||||||
|
textarea.select();
|
||||||
|
|
||||||
|
try {
|
||||||
|
const success = document.execCommand('copy');
|
||||||
|
if (success) {
|
||||||
|
btn.innerHTML = '<i class="ri-check-line"></i> 已复制';
|
||||||
|
btn.classList.add('copied');
|
||||||
|
setTimeout(() => {
|
||||||
|
btn.innerHTML = '<i class="ri-file-copy-line"></i> 复制';
|
||||||
|
btn.classList.remove('copied');
|
||||||
|
}, 2000);
|
||||||
|
} else {
|
||||||
|
btn.innerHTML = '<i class="ri-error-line"></i> 失败';
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
console.error('复制失败:', err);
|
console.error('复制失败:', err);
|
||||||
btn.innerHTML = '<i class="ri-error-line"></i> 失败';
|
btn.innerHTML = '<i class="ri-error-line"></i> 失败';
|
||||||
});
|
}
|
||||||
|
|
||||||
|
document.body.removeChild(textarea);
|
||||||
}
|
}
|
||||||
|
|
||||||
function regenerateMessage() {
|
function regenerateMessage() {
|
||||||
@@ -338,6 +362,8 @@
|
|||||||
alert('没有可重新生成的消息');
|
alert('没有可重新生成的消息');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// 设置重新生成标志,避免再次显示用户消息
|
||||||
|
isRegenerating = true;
|
||||||
// 移除最后一条助手消息
|
// 移除最后一条助手消息
|
||||||
const container = document.getElementById('messagesContainer');
|
const container = document.getElementById('messagesContainer');
|
||||||
const messages = container.querySelectorAll('.message.assistant');
|
const messages = container.querySelectorAll('.message.assistant');
|
||||||
|
|||||||
Reference in New Issue
Block a user