Files
aidenybai--react-scan/packages/extension/src/background/icon.ts
T
wehub-resource-sync da10c3c2c3
Publish Any Commit / build (22) (push) Failing after 1s
Build Extension / build (push) Failing after 1s
chore: import upstream snapshot with attribution
2026-07-13 12:20:35 +08:00

60 lines
1.6 KiB
TypeScript

import browser from 'webextension-polyfill';
export enum IconState {
DISABLED = 'disabled',
ENABLED = 'enabled',
}
const browserAction = browser.action || browser.browserAction;
const cachedIcons = {
[IconState.ENABLED]: {
path: {
16: browser.runtime.getURL('icons/enabled/16.png'),
32: browser.runtime.getURL('icons/enabled/32.png'),
48: browser.runtime.getURL('icons/enabled/48.png'),
128: browser.runtime.getURL('icons/enabled/128.png'),
},
},
[IconState.DISABLED]: {
path: {
16: browser.runtime.getURL('icons/disabled/16.png'),
32: browser.runtime.getURL('icons/disabled/32.png'),
48: browser.runtime.getURL('icons/disabled/48.png'),
128: browser.runtime.getURL('icons/disabled/128.png'),
},
},
};
export const updateIconForTab = async (
tab: browser.Tabs.Tab,
state: IconState,
badgeText = 'on',
): Promise<void> => {
try {
switch (state) {
case IconState.ENABLED:
await browserAction.setIcon({
tabId: tab.id,
path: cachedIcons[IconState.ENABLED].path,
});
if (badgeText) {
await browserAction.setBadgeText({ text: badgeText, tabId: tab.id });
await browserAction.setBadgeBackgroundColor({
color: '#A295EE',
tabId: tab.id,
});
}
break;
default:
await browserAction.setIcon({
tabId: tab.id,
path: cachedIcons[IconState.DISABLED].path,
});
await browserAction.setBadgeText({ text: '', tabId: tab.id });
break;
}
} catch {}
};