diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-01-29 17:19:04 +0100 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-01-29 17:19:04 +0100 |
commit | 0cfcd80f3a715a77821aa83e0c89245ec2f53eec (patch) | |
tree | aec2aea5c24c15f287bc05e695b60d45a26e6dc8 /src/pages/messages_src | |
parent | chore(merge): Merge remote-tracking branch 'origin/master' (diff) | |
parent | Added Structables, and made it the default https://codeberg.org/LibRedirect/b... (diff) | |
download | libredirect-0cfcd80f3a715a77821aa83e0c89245ec2f53eec.zip |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src/pages/messages_src')
-rw-r--r-- | src/pages/messages_src/App.svelte | 104 |
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> |