aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2023-03-05 17:29:09 +0300
committerManeraKai <manerakai@protonmail.com>2023-03-05 17:29:09 +0300
commit53cfc0522795c6487c5f4e7a6cdac4f426151ef8 (patch)
tree7e98d8f05a358b5ba799465a02534c0d12f04a30
parentMerge branch 'master' of https://github.com/libredirect/libredirect (diff)
downloadlibredirect-53cfc0522795c6487c5f4e7a6cdac4f426151ef8.zip
Fixed random bugs
-rw-r--r--src/assets/javascripts/general.js6
-rw-r--r--src/assets/javascripts/services.js8
-rw-r--r--src/manifest.json1
-rw-r--r--src/pages/background/background.js34
-rw-r--r--src/pages/options/index.js18
-rw-r--r--src/pages/options/widgets/general.js8
-rw-r--r--src/pages/options/widgets/services.pug3
-rw-r--r--src/pages/popup/popup.js45
8 files changed, 70 insertions, 53 deletions
diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js
index 592f604d..7adb0433 100644
--- a/src/assets/javascripts/general.js
+++ b/src/assets/javascripts/general.js
@@ -7,8 +7,10 @@ window.browser = window.browser || window.chrome
let exceptions
function isException(url) {
- for (const item of exceptions.url) if (item == url.href) return true
- for (const item of exceptions.regex) if (new RegExp(item).test(url.href)) return true
+ if (url !== undefined) {
+ for (const item of exceptions.url) if (item == url.href) return true
+ for (const item of exceptions.regex) if (new RegExp(item).test(url.href)) return true
+ }
return false
}
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index eb2a665e..c536851d 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -725,17 +725,11 @@ function initDefaults() {
function upgradeOptions() {
return new Promise(async resolve => {
- const oldOptions = await utils.getOptions()
+ let options = await utils.getOptions()
const config = await utils.getConfig()
- let options = {}
- options = [...oldOptions]
options.fetchInstances = 'github'
- for (service in config.services) {
- options[service].unsupportedUrls = 'bypass'
- }
-
browser.storage.local.clear(() => {
browser.storage.local.set({ options }, () => {
resolve()
diff --git a/src/manifest.json b/src/manifest.json
index 21bfea19..50c85b8e 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -26,7 +26,6 @@
"clipboardWrite",
"contextMenus",
"bookmarks",
- "browserSettings",
"<all_urls>"
],
"browser_action": {
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())