From e87be3df2ad51f57399b3c4e77674dea30ca9175 Mon Sep 17 00:00:00 2001 From: Lesley Norton Date: Fri, 10 Dec 2021 11:49:31 -0600 Subject: [PATCH] Fix MAC-689 This prevents permission prompts from getting lost when multiple permission checkboxes are checked before their corresponding prompts are accepted or declined and one of the permissions requires a reboot when enabled (Jira ticket MAC-689) --- src/js/options.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/js/options.js b/src/js/options.js index 311807a..726827b 100644 --- a/src/js/options.js +++ b/src/js/options.js @@ -8,13 +8,27 @@ async function setUpCheckBoxes() { }); } +function disablePermissionsInputs() { + document.querySelectorAll("[data-permission-id").forEach(el => { + el.disabled = true; + }); +} + +function enablePermissionsInputs() { + document.querySelectorAll("[data-permission-id").forEach(el => { + el.disabled = false; + }); +} + document.querySelectorAll("[data-permission-id").forEach(async(el) => { const permissionId = el.dataset.permissionId; el.addEventListener("change", async() => { if (el.checked) { + disablePermissionsInputs(); const granted = await browser.permissions.request({ permissions: [permissionId] }); if (!granted) { el.checked = false; + enablePermissionsInputs(); } return; } @@ -91,6 +105,7 @@ function resetOnboarding() { async function resetPermissionsUi() { await maybeShowPermissionsWarningIcon(); await setUpCheckBoxes(); + enablePermissionsInputs(); } browser.permissions.onAdded.addListener(resetPermissionsUi);