show connected tab count badge on extension icon

This commit is contained in:
Tommy D. Rossi
2025-11-28 15:18:11 +01:00
parent 258691de15
commit 1947a5eb6b
+11 -2
View File
@@ -636,7 +636,7 @@ const icons = {
},
title: 'Connected - Click to disconnect',
badgeText: '',
badgeColor: undefined,
badgeColor: [0, 0, 0, 0] as [number, number, number, number],
},
connecting: {
path: {
@@ -677,6 +677,8 @@ async function updateIcons(): Promise<void> {
const state = store.getState()
const { connectionState, tabs, errorText } = state
const connectedCount = Array.from(tabs.values()).filter((t) => t.state === 'connected').length
const allTabs = await chrome.tabs.query({})
const allTabIds = [undefined, ...allTabs.map((tab) => tab.id).filter((id): id is number => id !== undefined)]
@@ -698,10 +700,17 @@ async function updateIcons(): Promise<void> {
return iconConfig.title
})()
const badgeText = (() => {
if (iconConfig === icons.connected || iconConfig === icons.disconnected) {
return connectedCount > 0 ? String(connectedCount) : ''
}
return iconConfig.badgeText
})()
void chrome.action.setIcon({ tabId, path: iconConfig.path })
void chrome.action.setTitle({ tabId, title })
if (iconConfig.badgeColor) void chrome.action.setBadgeBackgroundColor({ tabId, color: iconConfig.badgeColor })
void chrome.action.setBadgeText({ tabId, text: iconConfig.badgeText })
void chrome.action.setBadgeText({ tabId, text: badgeText })
}
}