From 3d40644224207b27cb10eece8e878f61a27e9559 Mon Sep 17 00:00:00 2001 From: Younes Aassila <47226184+younesaassila@users.noreply.github.com> Date: Wed, 14 Sep 2022 15:57:29 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20icon=20not=20updating?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/background/handlers/onActivated.ts | 29 +++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/background/handlers/onActivated.ts b/src/background/handlers/onActivated.ts index e55c906..21b0038 100644 --- a/src/background/handlers/onActivated.ts +++ b/src/background/handlers/onActivated.ts @@ -1,16 +1,31 @@ import browser from "webextension-polyfill"; +const ICON_GRAY_PATH = new URL("../../assets/icon-gray.png", import.meta.url); +const ICON_PATH = new URL("../../assets/icon.png", import.meta.url); + +let activeTabId: number | undefined; + export default async function onActivated() { - const icon = await getBrowserActionIcon(); + await setBrowserActionIcon(); + browser.tabs.onUpdated.removeListener(setBrowserActionIcon); + browser.tabs.onUpdated.addListener(setBrowserActionIcon, { + tabId: activeTabId, + }); +} + +async function setBrowserActionIcon() { + const tabs = await browser.tabs.query({ active: true, currentWindow: true }); + const activeTab = tabs[0]; + if (activeTab) { + activeTabId = activeTab.id; + } + const icon = await getBrowserActionIcon(activeTab); browser.browserAction.setIcon(icon); } -async function getBrowserActionIcon(): Promise { - const ICON_GRAY_PATH = new URL("../../assets/icon-gray.png", import.meta.url); - const ICON_PATH = new URL("../../assets/icon.png", import.meta.url); - - const tabs = await browser.tabs.query({ active: true, currentWindow: true }); - const activeTab = tabs[0]; +async function getBrowserActionIcon( + activeTab: browser.Tabs.Tab | undefined +): Promise { if (!activeTab || !activeTab.url) return { path: ICON_GRAY_PATH.href }; try { const url = new URL(activeTab.url);