aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/messages_src
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-01-29 17:19:04 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-01-29 17:19:04 +0100
commit0cfcd80f3a715a77821aa83e0c89245ec2f53eec (patch)
treeaec2aea5c24c15f287bc05e695b60d45a26e6dc8 /src/pages/messages_src
parentchore(merge): Merge remote-tracking branch 'origin/master' (diff)
parentAdded Structables, and made it the default https://codeberg.org/LibRedirect/b... (diff)
downloadlibredirect-0cfcd80f3a715a77821aa83e0c89245ec2f53eec.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src/pages/messages_src')
-rw-r--r--src/pages/messages_src/App.svelte104
1 files changed, 19 insertions, 85 deletions
diff --git a/src/pages/messages_src/App.svelte b/src/pages/messages_src/App.svelte
index 1c5170dd..82526530 100644
--- a/src/pages/messages_src/App.svelte
+++ b/src/pages/messages_src/App.svelte
@@ -9,7 +9,6 @@
import { options, config, page } from "./stores"
import Button from "../components/Button.svelte"
import AutoPickIcon from "../icons/AutoPickIcon.svelte"
- import SwitchInstanceIcon from "../icons/SwitchInstanceIcon.svelte"
let _options
const unsubscribeOptions = options.subscribe(val => {
@@ -49,70 +48,20 @@
const oldUrl = new URL(params.get("url"))
async function autoPick() {
- const frontend = params.get("frontend")
autoPicking = true
+ const frontend = params.get("frontend")
const redirects = await utils.getList(_options)
- const instances = utils.randomInstances(redirects[frontend]["clearnet"], 5)
- const pings = await Promise.all([
- ...instances.map(async instance => {
- return [instance, await utils.ping(instance)]
- }),
- ])
- pings.sort((a, b) => a[1] - b[1])
- _options[frontend].push(pings[0][0])
+ const clearnet = redirects[frontend]["clearnet"]
+ const instance = await utils.autoPickInstance(clearnet)
+ _options[frontend].push(instance)
options.set(_options)
autoPicking = false
}
- async function autoPickInstance() {
- await autoPick()
- await redirectUrl()
- }
-
- async function enableService() {
- const service = await servicesHelper.computeService(oldUrl)
- _options[service].enabled = true
- options.set(_options)
- await redirectUrl()
- }
-
async function redirectUrl() {
const newUrl = await servicesHelper.redirectAsync(oldUrl, "main_frame", null, null, false, true)
browser.tabs.update({ url: newUrl })
}
-
- async function switchInstance() {
- const newUrl = await servicesHelper.switchInstance(oldUrl)
- browser.tabs.update({ url: newUrl })
- }
-
- async function removeInstance() {
- const service = await servicesHelper.computeService(oldUrl)
- const frontend = params.get("frontend")
- const i = _options[frontend].findIndex(instance => oldUrl.href.startsWith(instance))
- _options[frontend].splice(i, 1)
- options.set(_options)
- const newUrl = await servicesHelper.switchInstance(oldUrl, service)
- browser.tabs.update({ url: newUrl })
- }
-
- async function removeAndAutoPickInstance() {
- const service = await servicesHelper.computeService(oldUrl)
-
- const frontend = params.get("frontend")
- const i = _options[frontend].findIndex(instance => oldUrl.href.startsWith(instance))
- _options[frontend].splice(i, 1)
- options.set(_options)
- await autoPick()
- const newUrl = await servicesHelper.switchInstance(oldUrl, service)
- browser.tabs.update({ url: newUrl })
- }
-
- async function addAutoPickInstance() {
- await autoPick()
- const newUrl = await servicesHelper.switchInstance(oldUrl)
- browser.tabs.update({ url: newUrl })
- }
</script>
{#if _options && _config}
@@ -120,42 +69,27 @@
{#if params.get("message") == "disabled"}
<div>
<h1>You disabled redirections for this service</h1>
- <Button on:click={enableService}>
+ <Button
+ on:click={async () => {
+ const { service } = await servicesHelper.computeServiceFrontend(oldUrl)
+ _options[service].enabled = true
+ options.set(_options)
+ await redirectUrl()
+ }}
+ >
{browser.i18n.getMessage("enable") || "Enable"}
</Button>
</div>
- {:else if params.get("message") == "server_error"}
- <!-- https://httpstat.us/403 for testing -->
- <div>
- <h1>Your selected instance gave out an error: {params.get("code")}</h1>
- {#if _options[params.get("frontend")].length > 1}
- <Button on:click={switchInstance}>
- <SwitchInstanceIcon class="margin margin_{document.body.dir}" />
- {browser.i18n.getMessage("switchInstance") || "Switch Instance"}
- </Button>
- <Button on:click={removeInstance}>
- <SwitchInstanceIcon class="margin margin_{document.body.dir}" />
- {browser.i18n.getMessage("removeInstance") || "Remove Instance"}
- +
- {browser.i18n.getMessage("switchInstance") || "Switch Instance"}
- </Button>
- {:else}
- <Button on:click={addAutoPickInstance} disabled={autoPicking}>
- <AutoPickIcon class="margin margin_{document.body.dir}" />
- {browser.i18n.getMessage("autoPickInstance") || "Auto Pick Instance"}
- </Button>
- <Button on:click={removeAndAutoPickInstance} disabled={autoPicking}>
- <AutoPickIcon class="margin margin_{document.body.dir}" />
- {browser.i18n.getMessage("removeInstance") || "Remove Instance"}
- +
- {browser.i18n.getMessage("autoPickInstance") || "Auto Pick Instance"}
- </Button>
- {/if}
- </div>
{:else if params.get("message") == "no_instance"}
<div>
<h1>You have no instance selected for this frontend</h1>
- <Button on:click={autoPickInstance} disabled={autoPicking}>
+ <Button
+ on:click={async () => {
+ await autoPick()
+ await redirectUrl()
+ }}
+ disabled={autoPicking}
+ >
<AutoPickIcon class="margin margin_{document.body.dir}" />
{browser.i18n.getMessage("autoPickInstance") || "Auto Pick Instance"}
</Button>