From dd4b741e4ab7d6892cbc4a4316c73d92ef48efed Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Mon, 26 Aug 2024 15:33:25 +0300 Subject: Added Auto Pick Instance https://github.com/libredirect/browser_extension/issues/949 --- src/pages/icons/AutoPickIcon.svelte | 11 ++++++++ src/pages/options_src/Services/Instances.svelte | 37 ++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/pages/icons/AutoPickIcon.svelte (limited to 'src/pages') diff --git a/src/pages/icons/AutoPickIcon.svelte b/src/pages/icons/AutoPickIcon.svelte new file mode 100644 index 00000000..86adfa28 --- /dev/null +++ b/src/pages/icons/AutoPickIcon.svelte @@ -0,0 +1,11 @@ + diff --git a/src/pages/options_src/Services/Instances.svelte b/src/pages/options_src/Services/Instances.svelte index 3b870c4b..32425b80 100644 --- a/src/pages/options_src/Services/Instances.svelte +++ b/src/pages/options_src/Services/Instances.svelte @@ -5,6 +5,7 @@ import AddIcon from "../../icons/AddIcon.svelte" import { options, config } from "../stores" import PingIcon from "../../icons/PingIcon.svelte" + import AutoPickIcon from "../../icons/AutoPickIcon.svelte" import Row from "../../components/Row.svelte" import Input from "../../components/Input.svelte" import Label from "../../components/Label.svelte" @@ -36,10 +37,9 @@ allInstances = [] if (_options[selectedFrontend]) allInstances.push(..._options[selectedFrontend]) if (redirects && redirects[selectedFrontend]) { - for (const network in redirects[selectedFrontend]) { - allInstances.push(...redirects[selectedFrontend][network]) - } + allInstances.push(...redirects[selectedFrontend]["clearnet"]) } + allInstances = [...new Set(allInstances)] } let pingCache @@ -64,6 +64,31 @@ pingCache[instance] = colorTime(time) } } + function randomInstances(n) { + let instances = [] + for (let i = 0; i < n; i++) { + instances.push(redirects[selectedFrontend]["clearnet"][Math.floor(Math.random() * allInstances.length)]) + } + return instances + } + + async function autoPickInstance() { + const instances = randomInstances(5) + const myInstancesCache = [] + for (const instance of instances) { + pingCache[instance] = { color: "lightblue", value: "pinging..." } + const time = await utils.ping(instance) + pingCache[instance] = colorTime(time) + myInstancesCache.push([instance, time]) + } + myInstancesCache.sort(function (a, b) { + return a[1] - b[1] + }) + + _options[selectedFrontend].push(myInstancesCache[0][0]) + options.set(_options) + } + function colorTime(time) { let value let color @@ -102,11 +127,15 @@ {#if serviceConf.frontends[selectedFrontend].instanceList && redirects && blacklist}
-
+
+
-- cgit 1.4.1