diff options
Diffstat (limited to 'src/pages')
-rw-r--r-- | src/pages/background/background.js | 34 | ||||
-rw-r--r-- | src/pages/options/index.js | 18 | ||||
-rw-r--r-- | src/pages/options/widgets/general.js | 8 | ||||
-rw-r--r-- | src/pages/options/widgets/services.pug | 3 | ||||
-rw-r--r-- | src/pages/popup/popup.js | 45 |
5 files changed, 65 insertions, 43 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 3e55a861..f346acf1 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -18,6 +18,7 @@ browser.runtime.onInstalled.addListener(async details => { else if (details.reason == "update") { if (details.previousVersion == '2.5.2') { await servicesHelper.upgradeOptions() + await servicesHelper.processUpdate() } else { await servicesHelper.processUpdate() } @@ -30,6 +31,7 @@ let tabIdRedirects = {} // true == Always redirect, false == Never redirect, null/undefined == follow options for services browser.webRequest.onBeforeRequest.addListener( details => { + console.log(details.url) const url = new URL(details.url) if (new RegExp(/^chrome-extension:\/{2}.*\/instances\/.*.json$/).test(url.href) && details.type == "xmlhttprequest") return let initiator @@ -138,23 +140,25 @@ browser.contextMenus.create({ contexts: ["link"], }) -browser.contextMenus.create({ - id: "redirectBookmark", - title: 'Redirect', - contexts: ["bookmark"], -}) +if (!window.chrome) { + browser.contextMenus.create({ + id: "redirectBookmark", + title: 'Redirect', + contexts: ["bookmark"], + }) -browser.contextMenus.create({ - id: "reverseBookmark", - title: 'Reverse redirect', - contexts: ["bookmark"], -}) + browser.contextMenus.create({ + id: "reverseBookmark", + title: 'Reverse redirect', + contexts: ["bookmark"], + }) -browser.contextMenus.create({ - id: "copyReverseBookmark", - title: 'Copy Reverse', - contexts: ["bookmark"], -}) + browser.contextMenus.create({ + id: "copyReverseBookmark", + title: 'Copy Reverse', + contexts: ["bookmark"], + }) +} browser.contextMenus.onClicked.addListener(async (info) => { diff --git a/src/pages/options/index.js b/src/pages/options/index.js index 1256c9b1..9fde7cd3 100644 --- a/src/pages/options/index.js +++ b/src/pages/options/index.js @@ -17,7 +17,8 @@ for (const a of document.getElementById("links").getElementsByTagName("a")) { config = await utils.getConfig() options = await utils.getOptions() -function changeFrontendsSettings(service) { +async function changeFrontendsSettings(service) { + options = await utils.getOptions() const opacityDiv = document.getElementById(`${service}-opacity`) if (document.getElementById(`${service}-enabled`).checked) { opacityDiv.style.pointerEvents = 'auto' @@ -40,6 +41,20 @@ function changeFrontendsSettings(service) { } } } + if (config.services[service].frontends[divs[service].frontend.value].embeddable) { + document.getElementById(`${service}-redirectType`).innerHTML = ` + <option value="both" data-localise="__MSG_both__">both</options> + <option value="sub_frame" data-localise="__MSG_onlyEmbedded__">Only Embedded</option> + <option value="main_frame" data-localise="__MSG_onlyNotEmbedded__">Only Not Embedded</option> + ` + document.getElementById(`${service}-redirectType`).value = options[divs[service].frontend.value].redirectType = options[service].redirectType + } else { + document.getElementById(`${service}-redirectType`).innerHTML = ` + <option value="main_frame" data-localise="__MSG_onlyNotEmbedded__">Only Not Embedded</option> + ` + options[service].redirectType = "main_frame" + browser.storage.local.set({ options }) + } const frontend_name_element = document.getElementById(`${service}_page`).getElementsByClassName("frontend_name")[0] if (divs[service].frontend) { frontend_name_element.href = config.services[service].frontends[divs[service].frontend.value].url @@ -72,6 +87,7 @@ async function loadPage(path) { if (typeof config.services[service].options[option] == "boolean") divs[service][option].checked = options[service][option] else divs[service][option].value = options[service][option] + divs[service][option].addEventListener("change", async () => { let options = await utils.getOptions() if (typeof config.services[service].options[option] == "boolean") diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js index b676046b..484edc05 100644 --- a/src/pages/options/widgets/general.js +++ b/src/pages/options/widgets/general.js @@ -17,7 +17,6 @@ async function setOption(option, type, event) { } let exportSettingsElement = document.getElementById("export-settings") - async function exportSettings() { const options = await utils.getOptions() options.version = browser.runtime.getManifest().version @@ -43,6 +42,7 @@ importSettingsElement.addEventListener("change", () => { "theme" in data && data.version == browser.runtime.getManifest().version ) { + browser.storage.local.clear(async () => { browser.storage.local.set({ options: data }, () => { location.reload() @@ -71,7 +71,8 @@ resetSettings.addEventListener("click", async () => { location.reload() }) -document.getElementById('fetch-instances').addEventListener('change', event => { +let fetchInstancesElement = document.getElementById('fetch-instances') +fetchInstancesElement.addEventListener('change', event => { setOption('fetchInstances', 'select', event) location.reload() }) @@ -100,9 +101,9 @@ for (const service in config.services) { }) } - let options = await utils.getOptions() themeElement.value = options.theme +fetchInstancesElement.value = options.fetchInstances for (const service in config.services) document.getElementById(service).checked = options.popupServices.includes(service) instanceTypeElement.addEventListener("change", event => { @@ -166,7 +167,6 @@ document.getElementById("custom-exceptions-instance-form").addEventListener("sub if (val) { options = await utils.getOptions() options.exceptions = exceptionsCustomInstances - console.log(options.exceptions) browser.storage.local.set({ options }, () => nameCustomInstanceInput.value = "" ) diff --git a/src/pages/options/widgets/services.pug b/src/pages/options/widgets/services.pug index e375c052..98fd25bb 100644 --- a/src/pages/options/widgets/services.pug +++ b/src/pages/options/widgets/services.pug @@ -30,9 +30,6 @@ each val, service in services div(class="some-block option-block") h4(data-localise="__MSG_redirectType__") Redirect Type select(id=service+"-redirectType") - option(value="both" data-localise="__MSG_both__") both - option(value="sub_frame" data-localise="__MSG_onlyEmbedded__") Only Embedded - option(value="main_frame" data-localise="__MSG_onlyNotEmbedded__") Only Not Embedded div(class="some-block option-block") h4 Unsupported paths handling diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index 705aaa8b..fc21ecfd 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -5,26 +5,31 @@ import servicesHelper from "../../assets/javascripts/services.js" import utils from "../../assets/javascripts/utils.js" browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - const url = new URL(tabs[0].url) - servicesHelper.switchInstance(url).then(r => { - if (!r) { - document.getElementById("change_instance_div").style.display = "none" - } - else { - document.getElementById("change_instance").addEventListener("click", - async () => browser.tabs.update({ url: await servicesHelper.switchInstance(url) }) - ) - } - }) - servicesHelper.copyRaw(url, true).then(r => { - if (!r) { - document.getElementById("copy_raw_div").style.display = "none" - } - else { - const copy_raw = document.getElementById("copy_raw") - copy_raw.addEventListener("click", () => servicesHelper.copyRaw(url)) - } - }) + if (tabs[0].url) { + const url = new URL(tabs[0].url) + servicesHelper.switchInstance(url).then(r => { + if (!r) { + document.getElementById("change_instance_div").style.display = "none" + } + else { + document.getElementById("change_instance").addEventListener("click", + async () => browser.tabs.update({ url: await servicesHelper.switchInstance(url) }) + ) + } + }) + servicesHelper.copyRaw(url, true).then(r => { + if (!r) { + document.getElementById("copy_raw_div").style.display = "none" + } + else { + const copy_raw = document.getElementById("copy_raw") + copy_raw.addEventListener("click", () => servicesHelper.copyRaw(url)) + } + }) + } else { + document.getElementById("change_instance_div").style.display = "none" + document.getElementById("copy_raw_div").style.display = "none" + } }) document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage()) |