From 8e5986817e0ec06dd20998f52311abaa06f5ebd8 Mon Sep 17 00:00:00 2001 From: kkapsner Date: Tue, 26 Jan 2021 13:47:11 +0100 Subject: [PATCH] Update improvements For #522 --- _locales/en/messages.json | 9 +++++++++ lib/main.js | 21 +++++++++++++++++++++ lib/settingDefinitions.js | 4 ++++ options/settingsDisplay.js | 3 +++ releaseNotes.txt | 3 ++- 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index c781584..7af68b7 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -185,6 +185,15 @@ "description": "" }, + "disruptSessionOnUpdate_title": { + "message": "Disrupt session on update", + "description": "" + }, + "disruptSessionOnUpdate_description": { + "message": "If set to true the extension will update as soon as the update is available. This might break some tabs that are currently open.", + "description": "" + }, + "hideSetting": { "message": "Click here to hide this setting.", "description": "" diff --git a/lib/main.js b/lib/main.js index 9afb241..602418b 100644 --- a/lib/main.js +++ b/lib/main.js @@ -199,5 +199,26 @@ }); }); } + if (browser.runtime.onUpdateAvailable){ + browser.runtime.onUpdateAvailable.addListener(async function(details){ + logging.message("Update available", details); + if (settings.disruptSessionOnUpdate){ + await Promise.all((await browser.tabs.query({})).map(async function(tab){ + try{ + await browser.tabs.sendMessage(tab.id, { + "canvasBlocker-unload": true + }); + } + catch(error){ + logging.verbose("error while unloading", tab, ":", error); + } + })); + window.setTimeout(function(){ + logging.verbose("Reload extension after one second"); + browser.runtime.reload(); + }, 1000); + } + }); + } logging.message("end"); }()); diff --git a/lib/settingDefinitions.js b/lib/settingDefinitions.js index 625d6e0..e5a566e 100644 --- a/lib/settingDefinitions.js +++ b/lib/settingDefinitions.js @@ -408,6 +408,10 @@ name: "dontShowOptionsOnUpdate", defaultValue: false }, + { + name: "disruptSessionOnUpdate", + defaultValue: false + }, { name: "isStillDefault", defaultValue: true diff --git a/options/settingsDisplay.js b/options/settingsDisplay.js index 4ebe6f1..38041ee 100644 --- a/options/settingsDisplay.js +++ b/options/settingsDisplay.js @@ -16,6 +16,9 @@ { "name": "blockMode" }, + { + "name": "disruptSessionOnUpdate" + }, ] }, { diff --git a/releaseNotes.txt b/releaseNotes.txt index 4d6712e..55be86a 100644 --- a/releaseNotes.txt +++ b/releaseNotes.txt @@ -3,7 +3,8 @@ Version 1.6: - new features: - - + - try to not break tabs when updating + - setting to postpone updates until browser restart fixes: - fix message canvasBlocker-unload