queue/source/utilities/browser.ts

39 lines
1.1 KiB
TypeScript

import browser from 'webextension-polyfill';
import {Queue} from '../types.d';
import Settings from './settings';
/** Initializes the background message handler. */
export function backgroundHandler() {
browser.runtime.onMessage.addListener((request: Queue.Message<unknown>) => {
if (request.action === 'queue open url') {
// @ts-expect-error Changing <unknown> to <Queue.Item>.
const message: Queue.Message<Queue.Item> = request;
window.location.href = message.data.url;
}
});
}
/** Returns the WebExtension Manifest. */
export function getManifest(): Queue.Manifest {
return browser.runtime.getManifest();
}
/**
* Updates the extension icon badge with the number of saved items. This can
* only be run from the background script.
*/
export async function updateBadge(settings: Settings): Promise<void> {
await browser.browserAction.setBadgeBackgroundColor({
color: '#2a2041',
});
await browser.browserAction.setBadgeText({
text: settings.queue.length === 0 ? null : settings.queue.length.toString(),
});
browser.browserAction.setBadgeTextColor({
color: '#f2efff',
});
}