aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/popup_src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2024-09-21 09:30:22 +0300
committerManeraKai <manerakai@protonmail.com>2024-09-21 09:31:45 +0300
commitd4151c826fff5008a0d6017feced261061585deb (patch)
treec459e40e16f4eef875232383b1d0a492ae936c64 /src/pages/popup_src
parentAdded margin to popup buttons (diff)
downloadlibredirect-d4151c826fff5008a0d6017feced261061585deb.zip
Restricted maps regex
Diffstat (limited to 'src/pages/popup_src')
-rw-r--r--src/pages/popup_src/Buttons.svelte95
1 files changed, 44 insertions, 51 deletions
diff --git a/src/pages/popup_src/Buttons.svelte b/src/pages/popup_src/Buttons.svelte
index 992ed8e2..2354fcac 100644
--- a/src/pages/popup_src/Buttons.svelte
+++ b/src/pages/popup_src/Buttons.svelte
@@ -17,7 +17,6 @@
let _options
let _config
- let autoPicking = false
const unsubscribeOptions = options.subscribe(val => (_options = val))
const unsubscribeConfig = config.subscribe(val => (_config = val))
@@ -30,7 +29,6 @@
let switchInstance
let redirectToOriginal
let redirect
- let currentService
let frontend
let service
browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
@@ -39,57 +37,20 @@
servicesHelper.switchInstance(url).then(r => (switchInstance = r))
servicesHelper.reverse(url).then(r => (redirectToOriginal = r))
servicesHelper.redirectAsync(url, "main_frame", null, null, false, true).then(r => (redirect = r))
- servicesHelper.computeService(url).then(r => (currentService = r))
- const computed = servicesHelper.computeFrontend(url)
- if (computed) {
- ;({ service, frontend } = computed)
- }
+ servicesHelper.computeServiceFrontend(url).then(r => ({ service, frontend } = r))
}
})
- async function removeInstance() {
- const i = _options[frontend].findIndex(instance => url.href.startsWith(instance))
- _options[frontend].splice(i, 1)
- options.set(_options)
- const newUrl = await servicesHelper.switchInstance(url, service)
- browser.tabs.update({ url: newUrl })
- window.close()
- }
-
- async function autoPickInstance() {
+ let autoPicking = false
+ async function autoPick() {
autoPicking = true
const redirects = await utils.getList(_options)
const clearnet = redirects[frontend]["clearnet"]
- const i = clearnet.findIndex(instance => url.href.startsWith(instance))
- if (i >= 0) clearnet.splice(i, 1)
- const randomInstances = utils.randomInstances(clearnet, 5)
- const pings = await Promise.all([
- ...randomInstances.map(async instance => {
- return [instance, await utils.ping(instance)]
- }),
- ])
- pings.sort((a, b) => a[1] - b[1])
- _options[frontend].push(pings[0][0])
+ const instance = await utils.autoPickInstance(clearnet, url)
+ _options[frontend].push(instance)
options.set(_options)
autoPicking = false
}
-
- async function addAutoPickInstance() {
- await autoPickInstance()
- browser.tabs.update({ url: await servicesHelper.switchInstance(url, service) }, () => {
- window.close()
- })
- }
-
- async function removeAndAutoPickInstance() {
- const i = _options[frontend].findIndex(instance => url.href.startsWith(instance))
- _options[frontend].splice(i, 1)
- options.set(_options)
- await autoPickInstance()
- browser.tabs.update({ url: await servicesHelper.switchInstance(url, service) }, () => {
- window.close()
- })
- }
</script>
<div class={document.body.dir}>
@@ -125,7 +86,18 @@
<SwitchInstanceIcon />
</Row>
{/if}
- <Row class="interactive" on:click={removeInstance}>
+ <Row
+ class="interactive"
+ on:click={async () => {
+ const i = _options[frontend].findIndex(instance => url.href.startsWith(instance))
+ _options[frontend].splice(i, 1)
+ options.set(_options)
+ const newUrl = await servicesHelper.switchInstance(url, service)
+ browser.tabs.update({ url: newUrl }, () => {
+ window.close()
+ })
+ }}
+ >
<Label class="margin">
{browser.i18n.getMessage("remove") || "Remove"}
+
@@ -134,7 +106,18 @@
<SwitchInstanceIcon />
</Row>
{:else}
- <Row class={"interactive " + (autoPicking ? "disabled" : "")} on:click={removeAndAutoPickInstance}>
+ <Row
+ class={"interactive " + (autoPicking ? "disabled" : "")}
+ on:click={async () => {
+ const i = _options[frontend].findIndex(instance => url.href.startsWith(instance))
+ _options[frontend].splice(i, 1)
+ options.set(_options)
+ await autoPick()
+ browser.tabs.update({ url: await servicesHelper.switchInstance(url, service) }, () => {
+ window.close()
+ })
+ }}
+ >
<Label class="margin">
{browser.i18n.getMessage("remove") || "Remove"}
+
@@ -142,7 +125,15 @@
</Label>
<AutoPickIcon />
</Row>
- <Row class={"interactive " + (autoPicking ? "disabled" : "")} on:click={addAutoPickInstance}>
+ <Row
+ class={"interactive " + (autoPicking ? "disabled" : "")}
+ on:click={async () => {
+ await autoPick()
+ browser.tabs.update({ url: await servicesHelper.switchInstance(url, service) }, () => {
+ window.close()
+ })
+ }}
+ >
<Label class="margin">
{browser.i18n.getMessage("autoPickInstance") || "Auto Pick Instance"}
</Label>
@@ -161,7 +152,9 @@
on:click={() => {
browser.tabs.query({ active: true, currentWindow: true }, tabs => {
browser.runtime.sendMessage({ message: "reverse", tabId: tabs[0].id }, () => {
- browser.tabs.update({ url: redirectToOriginal })
+ browser.tabs.update({ url: redirectToOriginal }, () => {
+ window.close()
+ })
})
})
}}
@@ -175,13 +168,13 @@
<hr />
{/if}
- {#if currentService}
- <Switch serviceKey={currentService} {url} />
+ {#if service}
+ <Switch serviceKey={service} {url} />
<hr />
{/if}
{#each _options.popupServices as serviceKey}
- {#if currentService !== serviceKey}
+ {#if service !== serviceKey}
<Switch {serviceKey} {url} />
{/if}
{/each}