mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-07-08 18:52:22 +08:00
fix: sidebar menu not updating after engine switch + dashboard loading skeleton
1. engine-manager: activateEngine 切换时调用 engine.boot() 检测状态 2. main.js: onEngineChange 监听器重绑 state/ready 回调,确保新引擎 状态变化时侧边栏自动刷新 3. Hermes 仪表盘: loading 期间显示骨架屏动画,消除空白等待 4. components.css: 新增 .skeleton-line 通用骨架行样式
This commit is contained in:
29
src/main.js
29
src/main.js
@@ -370,6 +370,28 @@ async function boot() {
|
||||
}).catch(() => {})
|
||||
: Promise.resolve()
|
||||
|
||||
// --- 引擎状态监听管理 ---
|
||||
let _engineStateUnsub = null
|
||||
let _engineReadyUnsub = null
|
||||
function bindEngineListeners(engine) {
|
||||
// 清理旧监听
|
||||
if (_engineStateUnsub) { _engineStateUnsub(); _engineStateUnsub = null }
|
||||
if (_engineReadyUnsub) { _engineReadyUnsub(); _engineReadyUnsub = null }
|
||||
// 注册新监听
|
||||
if (engine.onStateChange) {
|
||||
_engineStateUnsub = engine.onStateChange(() => renderSidebar(sidebar))
|
||||
}
|
||||
if (engine.onReadyChange) {
|
||||
_engineReadyUnsub = engine.onReadyChange(() => renderSidebar(sidebar))
|
||||
}
|
||||
}
|
||||
|
||||
// 引擎切换时:重新绑定状态监听 + 刷新侧边栏
|
||||
onEngineChange((engine) => {
|
||||
bindEngineListeners(engine)
|
||||
renderSidebar(sidebar)
|
||||
})
|
||||
|
||||
ensureWebSession.then(() => getActiveEngineId() === 'openclaw' ? loadActiveInstance() : Promise.resolve()).then(async () => {
|
||||
const engine = getActiveEngine()
|
||||
if (!engine) return
|
||||
@@ -381,12 +403,7 @@ async function boot() {
|
||||
renderSidebar(sidebar)
|
||||
|
||||
// 监听引擎状态变化(如 setup 完成后 ready 变为 true),自动刷新侧边栏
|
||||
if (engine.onStateChange) {
|
||||
engine.onStateChange(() => renderSidebar(sidebar))
|
||||
}
|
||||
if (engine.onReadyChange) {
|
||||
engine.onReadyChange(() => renderSidebar(sidebar))
|
||||
}
|
||||
bindEngineListeners(engine)
|
||||
|
||||
if (!engine.isReady()) {
|
||||
setDefaultRoute(engine.getSetupRoute())
|
||||
|
||||
Reference in New Issue
Block a user