diff --git a/web/packages/extension/src/background.ts b/web/packages/extension/src/background.ts index 4cf9c8cc6..988e58495 100644 --- a/web/packages/extension/src/background.ts +++ b/web/packages/extension/src/background.ts @@ -52,6 +52,16 @@ async function disable() { } } +function onAdded(permissions: chrome.permissions.Permissions) { + if ( + permissions.origins && + permissions.origins.length === 1 && + permissions.origins[0] !== "" + ) { + utils.tabs.reload(); + } +} + function onMessage( request: unknown, _sender: chrome.runtime.MessageSender, @@ -96,3 +106,4 @@ async function handleInstalled() { } utils.runtime.onInstalled.addListener(handleInstalled); +utils.permissions.onAdded.addListener(onAdded); diff --git a/web/packages/extension/src/popup.ts b/web/packages/extension/src/popup.ts index f40c6854d..4aaea1007 100644 --- a/web/packages/extension/src/popup.ts +++ b/web/packages/extension/src/popup.ts @@ -200,16 +200,11 @@ window.addEventListener("DOMContentLoaded", async () => { !(await utils.hasHostPermissionForActiveTab()) ) { permissionsButton.classList.remove("hidden"); - permissionsButton.addEventListener("click", async () => { - const grant = await utils.permissions.request({ + permissionsButton.addEventListener("click", () => { + utils.permissions.request({ origins: [url.toString()], }); - if (grant) { - // Unfortunately, due to the way the popup disappears, this will - // only work if the popup and the permission dialog happen to overlap - await utils.tabs.reload(activeTab.id!); - window.close(); - } + window.close(); }); } });