From 94a55c73c6594c256db8f37c44feae6e96c8e04a Mon Sep 17 00:00:00 2001 From: Slowlife Date: Wed, 25 Feb 2026 18:01:13 +0700 Subject: [PATCH] fix: wait for tabs state to be restored before init UI, p=#12506, c=live-folder --- src/zen/live-folders/ZenLiveFoldersManager.sys.mjs | 9 +++++---- src/zen/live-folders/ZenLiveFoldersUI.mjs | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/zen/live-folders/ZenLiveFoldersManager.sys.mjs b/src/zen/live-folders/ZenLiveFoldersManager.sys.mjs index 4819f8ed7..99f84b806 100644 --- a/src/zen/live-folders/ZenLiveFoldersManager.sys.mjs +++ b/src/zen/live-folders/ZenLiveFoldersManager.sys.mjs @@ -34,6 +34,7 @@ class nsZenLiveFoldersManager { #saveFilename = "zen-live-folders.jsonlz4"; #file = null; + stateRestored = Promise.withResolvers(); constructor() { this.liveFolders = new Map(); this.registry = new Map(); @@ -271,7 +272,7 @@ class nsZenLiveFoldersManager { id: "ZEN_LIVE_FOLDERS_CALLOUT", anchors: [ { - selector: `[id="${folder.id}"]`, + selector: `[id="${folder.id}"] > .tab-group-label-container`, panel_position: { anchor_attachment: "rightcenter", callout_attachment: "topleft", @@ -530,7 +531,6 @@ class nsZenLiveFoldersManager { tabsState.push({ itemId, label: tab.getAttribute("zen-show-sublabel"), - icon: tab.iconImage.src, }); } @@ -578,8 +578,7 @@ class nsZenLiveFoldersManager { this.liveFolders.set(entry.id, liveFolder); this.folderRefs.set(liveFolder, folder); - - liveFolder.tabsState = entry.tabsState; + liveFolder.tabsState = entry.tabsState || []; liveFolder.state.lastErrorId = entry.data.state.lastErrorId; if (entry.dismissedItems && Array.isArray(entry.dismissedItems)) { entry.dismissedItems.forEach((id) => this.dismissedItems.add(id)); @@ -587,6 +586,8 @@ class nsZenLiveFoldersManager { liveFolder.start(); } + + this.stateRestored.resolve(); } } diff --git a/src/zen/live-folders/ZenLiveFoldersUI.mjs b/src/zen/live-folders/ZenLiveFoldersUI.mjs index 5bb8e33ee..beef84d3f 100644 --- a/src/zen/live-folders/ZenLiveFoldersUI.mjs +++ b/src/zen/live-folders/ZenLiveFoldersUI.mjs @@ -25,10 +25,11 @@ class nsZenLiveFoldersUI { } }); - window.gZenWorkspaces.promiseInitialized.finally(() => { - const manager = lazy.ZenLiveFoldersManager; - - for (const liveFolder of manager.liveFolders.values()) { + Promise.all([ + window.gZenWorkspaces.promiseInitialized, + lazy.ZenLiveFoldersManager.stateRestored.promise, + ]).then(() => { + for (const liveFolder of lazy.ZenLiveFoldersManager.liveFolders.values()) { this.#restoreUIStateForLiveFolder(liveFolder); } });