import browser from 'webextension-polyfill'; import {Settings} from '../settings/settings.js'; import {updateBadge} from '../utilities/badge.js'; let timeoutId: number | undefined; export async function browserActionClicked(): Promise { const settings = await Settings.fromSyncStorage(); // When the extension icon is initially clicked, create a timeout for 500ms // that will open the next queue item when it expires. if (timeoutId === undefined) { timeoutId = window.setTimeout(async () => { timeoutId = undefined; const nextItem = settings.nextQueueItem(); if (nextItem === undefined) { await browser.runtime.openOptionsPage(); return; } await browser.tabs.update({url: nextItem.url}); await settings.removeQueueItem(nextItem.id); await updateBadge(settings); }, 500); return; } // If the icon is clicked again in those 500ms, open the options page instead. window.clearTimeout(timeoutId); timeoutId = undefined; await browser.runtime.openOptionsPage(); }