diff --git a/src/ZenGlanceManager.mjs b/src/ZenGlanceManager.mjs index 371d266..c4d2e9d 100644 --- a/src/ZenGlanceManager.mjs +++ b/src/ZenGlanceManager.mjs @@ -1,5 +1,57 @@ { + + class ZenGlanceManager extends ZenDOMOperatedFeature { + #currentBrowser = null; + + init() { + ChromeUtils.defineLazyGetter( + this, + 'overlay', + () => document.getElementById('zen-glance-overlay') + ); + + ChromeUtils.defineLazyGetter( + this, + 'browserWrapper', + () => document.getElementById('zen-glance-browser-container') + ); + + Services.obs.addObserver(this, "zen-glance-open"); + } + + observe(subject, topic, data) { + this.openGlance(data); + } + + openGlance(url) { + if (this.#currentBrowser) { + return; + } + const currentTab = gBrowser.selectedTab; + const overlayWrapper = currentTab.linkedBrowser.closest(".browserSidebarContainer"); + overlayWrapper.appendChild(this.overlay); + + window.requestAnimationFrame(() => { + this.overlay.removeAttribute("hidden"); + }); + } + + closeGlance() { + this.#currentBrowser?.remove(); + this.#currentBrowser = null; + + this.overlay.setAttribute("hidden", true); + } + + onLocationChange(_) { + this.closeGlance(); + } + } + + window.gZenGlanceManager = new ZenGlanceManager(); + + function registerWindowActors() { // TODO: Only if the pref is enabled gZenActorsManager.addJSWindowActor("ZenGlance", { diff --git a/src/actors/ZenGlanceParent.sys.mjs b/src/actors/ZenGlanceParent.sys.mjs index 0f1a4e9..5c0013f 100644 --- a/src/actors/ZenGlanceParent.sys.mjs +++ b/src/actors/ZenGlanceParent.sys.mjs @@ -12,13 +12,13 @@ export class ZenGlanceParent extends JSWindowActorParent { return Services.prefs.getIntPref('zen.glance.hold-duration', 500); } case 'ZenGlance:OpenGlance': { - this.openGlance(); + this.openGlance(message.data.url); break; } } } - openGlance() { - console.log('Opening glance'); + openGlance(data) { + Services.obs.notifyObservers(null, 'zen-glance-open', data); } } diff --git a/src/actors/ZenThemeMarketplaceParent.sys.mjs b/src/actors/ZenThemeMarketplaceParent.sys.mjs index cd60bbd..c2de04c 100644 --- a/src/actors/ZenThemeMarketplaceParent.sys.mjs +++ b/src/actors/ZenThemeMarketplaceParent.sys.mjs @@ -178,7 +178,6 @@ export class ZenThemeMarketplaceParent extends JSWindowActorParent { async removeTheme(themeId, triggerUpdate = true) { const themePath = PathUtils.join(this.themesRootPath, themeId); - console.info('ZenThemeMarketplaceParent: Removing theme ', themePath); await IOUtils.remove(themePath, { recursive: true, ignoreAbsent: true }); if (triggerUpdate) { this.triggerThemeUpdate();