Skip to content

Commit 89cf6c4

Browse files
committed
Refactor agent status display and update logic for improved performance and consistency
1 parent abb3e65 commit 89cf6c4

1 file changed

Lines changed: 28 additions & 31 deletions

File tree

src/static/index.html

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,12 +1694,11 @@
16941694
applySavedTheme();
16951695
await refreshThreads();
16961696
await refreshAgents();
1697-
await updateStatusBar();
16981697
updateOnlinePresence();
16991698
startSSE();
17001699
// Temporarily disable periodic agent polling to avoid showing many offline agents
17011700
// setInterval(refreshAgents, 12000);
1702-
setInterval(updateStatusBar, 5000); // Update status bar every 5 seconds
1701+
setInterval(refreshAgents, 5000); // Update status bar every 5 seconds
17031702

17041703
const tip = window.AcbTooltip.getTooltipElement();
17051704
if (tip) {
@@ -2051,7 +2050,7 @@
20512050
rebuildActiveThreadParticipants(msgs);
20522051
msgs.forEach(appendBubble);
20532052
updateOnlinePresence();
2054-
await updateStatusBar();
2053+
await refreshAgents();
20552054
if (msgs.length) lastSeq = msgs[msgs.length - 1].seq;
20562055
scrollBottom(false);
20572056
}
@@ -2066,7 +2065,7 @@
20662065
});
20672066
msgs.forEach(appendBubble);
20682067
updateOnlinePresence();
2069-
await updateStatusBar();
2068+
await refreshAgents();
20702069
msgs.forEach(m => { lastSeq = Math.max(lastSeq, m.seq); });
20712070
if (msgs.length) scrollBottom(true);
20722071
}
@@ -2444,8 +2443,19 @@
24442443
// Agents
24452444
// ==============================================================================================
24462445
async function refreshAgents() {
2447-
// Delegate to updateStatusBar() for consistency
2448-
await updateStatusBar();
2446+
// Delegate to window.AcbAgents.updateStatusBar() for consistency
2447+
await window.AcbAgents.updateStatusBar({
2448+
api,
2449+
setCurrentAgents: (agents) => { currentAgents = agents; },
2450+
getActiveThreadId: () => activeThreadId,
2451+
getAgentState,
2452+
getStateEmoji,
2453+
getOfflineTime,
2454+
isOfflineMoreThanHour,
2455+
getCompressedOfflineChar,
2456+
escapeHtml,
2457+
bindAgentTooltipEvents,
2458+
});
24492459
}
24502460

24512461
// ==============================================================================================
@@ -2536,38 +2546,25 @@
25362546
const offlineDisplay = offlineTime ? ` (${offlineTime})` : '';
25372547
const isLongOffline = isOfflineMoreThanHour(a);
25382548

2539-
const item = document.createElement('div');
2540-
item.className = 'agent-status-item';
2549+
const compressedChar = getCompressedOfflineChar(offlineTime);
2550+
const item = document.createElement('acb-agent-status-item');
2551+
item.setData({
2552+
emoji,
2553+
label,
2554+
state,
2555+
offlineDisplay,
2556+
isLongOffline,
2557+
compressedChar,
2558+
escapeHtml,
2559+
});
25412560

25422561
// Set data-agent-id for click-to-mention functionality
25432562
if (a && a.id) {
25442563
item.dataset.agentId = a.id;
2564+
bindAgentTooltipEvents(item, a);
25452565
} else if (a && a.agent_id) {
25462566
item.dataset.agentId = a.agent_id;
25472567
}
2548-
2549-
// Compress display if offline > 1 hour: just emoji + single char
2550-
if (isLongOffline) {
2551-
const compressedChar = getCompressedOfflineChar(offlineTime);
2552-
item.innerHTML = `
2553-
<div class="agent-status-emoji">${emoji}</div>
2554-
<div class="agent-status-text-compact">${compressedChar}</div>
2555-
`;
2556-
} else {
2557-
// Remove thread info display to keep agent list clean
2558-
item.innerHTML = `
2559-
<div class="agent-status-emoji">${emoji}</div>
2560-
<div class="agent-status-text">
2561-
<div class="agent-alias">${escapeHtml(label)}</div>
2562-
<div class="agent-state">${state}${offlineDisplay}</div>
2563-
</div>
2564-
`;
2565-
}
2566-
2567-
// 绑定agent tooltip交互
2568-
if (a && a.id) {
2569-
bindAgentTooltipEvents(item, a);
2570-
}
25712568
container.appendChild(item);
25722569
});
25732570
}

0 commit comments

Comments
 (0)