Merge branch 'feat/back-to-front' into feat/front-end

This commit is contained in:
Roe-xin
2026-01-12 18:11:13 +08:00
6 changed files with 184 additions and 106 deletions

View File

@ -303,6 +303,7 @@ export function getConversationHistoryBarScript(): string {
let totalHistory = 0;
let hasMoreHistory = false;
let isLoadingHistory = false;
let currentLoadRequestId = 0; // 请求 ID用于防止并发加载
const HISTORY_PAGE_SIZE = 10;
const MAX_HISTORY_ITEMS = 100;
@ -346,11 +347,15 @@ export function getConversationHistoryBarScript(): string {
return;
}
// 生成新的请求 ID用于防止并发加载
const requestId = ++currentLoadRequestId;
isLoadingHistory = true;
vscode.postMessage({
command: 'loadConversationHistory',
offset: currentOffset,
limit: HISTORY_PAGE_SIZE
limit: HISTORY_PAGE_SIZE,
requestId: requestId
});
}
@ -362,11 +367,19 @@ export function getConversationHistoryBarScript(): string {
return;
}
// 追加新数据
conversationHistory = conversationHistory.concat(data.items);
// 追加新数据(去重)
const existingIds = new Set(conversationHistory.map(item => item.id));
const newItems = [];
for (const item of data.items) {
if (!existingIds.has(item.id)) {
existingIds.add(item.id);
newItems.push(item);
}
}
conversationHistory = conversationHistory.concat(newItems);
totalHistory = data.total;
hasMoreHistory = data.hasMore;
currentOffset += data.items.length;
currentOffset = conversationHistory.length;
const historyList = document.getElementById('historyList');
if (!historyList) {
@ -454,9 +467,10 @@ export function getConversationHistoryBarScript(): string {
});
}
// 监听下拉菜单滚动事件
// 监听下拉菜单滚动事件(防止重复注册)
const historyDropdownMenu = document.getElementById('historyDropdownMenu');
if (historyDropdownMenu) {
if (historyDropdownMenu && !historyDropdownMenu._scrollListenerAdded) {
historyDropdownMenu._scrollListenerAdded = true;
historyDropdownMenu.addEventListener('scroll', () => {
const menu = historyDropdownMenu;
const scrollTop = menu.scrollTop;