39 lines
1.1 KiB
TypeScript
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',
|
|
});
|
|
}
|