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',
|
||
|
});
|
||
|
}
|