diff options
Diffstat (limited to 'src/pages/options_src')
-rw-r--r-- | src/pages/options_src/General/SettingsButtons.svelte | 2 | ||||
-rw-r--r-- | src/pages/options_src/Services/Instances.svelte | 93 | ||||
-rw-r--r-- | src/pages/options_src/Services/Services.svelte | 32 |
3 files changed, 73 insertions, 54 deletions
diff --git a/src/pages/options_src/General/SettingsButtons.svelte b/src/pages/options_src/General/SettingsButtons.svelte index 4be747fe..1b92ecbc 100644 --- a/src/pages/options_src/General/SettingsButtons.svelte +++ b/src/pages/options_src/General/SettingsButtons.svelte @@ -38,7 +38,7 @@ const resultString = JSON.stringify(_options, null, " ") const anchor = document.createElement("a") anchor.href = "data:application/json;base64," + btoa(resultString) - anchor.download = `libredirect-settings-v${_options.version}.json` + anchor.download = `libredirect-settings-v${_options.version}-${(new Date().toISOString().replace(':','-').slice(0,-5))}.json` anchor.click() } diff --git a/src/pages/options_src/Services/Instances.svelte b/src/pages/options_src/Services/Instances.svelte index 4e5d1e7d..b37c3904 100644 --- a/src/pages/options_src/Services/Instances.svelte +++ b/src/pages/options_src/Services/Instances.svelte @@ -56,30 +56,6 @@ return true } - async function pingInstances() { - pingCache = {} - for (const instance of allInstances) { - pingCache[instance] = { color: "lightblue", value: "pinging..." } - const time = await utils.ping(instance) - pingCache[instance] = colorTime(time) - } - } - - async function autoPickInstance() { - const instances = utils.randomInstances(redirects[selectedFrontend]["clearnet"], 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((a, b) => a[1] - b[1]) - - _options[selectedFrontend].push(myInstancesCache[0][0]) - options.set(_options) - } - function colorTime(time) { let value let color @@ -113,17 +89,46 @@ options.set(_options) } } + + let autoPicking = false + let pinging = false </script> {#if serviceConf.frontends[selectedFrontend].instanceList && redirects && blacklist} <hr /> <div> - <Button on:click={pingInstances}> + <Button + on:click={async () => { + pinging = true + pingCache = {} + for (const instance of allInstances) { + pingCache[instance] = { color: "lightblue", value: "pinging..." } + const time = await utils.ping(instance) + pingCache[instance] = colorTime(time) + } + pinging = false + }} + disabled={pinging} + > <PingIcon class="margin margin_{document.body.dir}" /> {browser.i18n.getMessage("pingInstances") || "Ping Instances"} </Button> - <Button on:click={autoPickInstance}> + <Button + on:click={async () => { + autoPicking = true + const clearnet = redirects[selectedFrontend]["clearnet"] + for (const instance of _options[selectedFrontend]) { + const i = clearnet.indexOf(instance) + if (i >= 0) clearnet.splice(i, 1) + } + const instance = await utils.autoPickInstance(clearnet) + _options[selectedFrontend].push(instance) + options.set(_options) + autoPicking = false + }} + disabled={autoPicking} + > <AutoPickIcon class="margin margin_{document.body.dir}" /> {browser.i18n.getMessage("autoPickInstance") || "Auto Pick Instance"} </Button> @@ -202,20 +207,34 @@ <span style="color:{pingCache[instance].color}">{pingCache[instance].value}</span> {/if} </span> - <button - class="add" - aria-label="Add instance" - on:click={() => { - if (_options[selectedFrontend]) { - if (!_options[selectedFrontend].includes(instance)) { + {#if !_options[selectedFrontend].includes(instance)} + <button + class="add" + aria-label="Add instance" + on:click={() => { + if (_options[selectedFrontend]) { _options[selectedFrontend].push(instance) options.set(_options) } - } - }} - > - <AddIcon /> - </button> + }} + > + <AddIcon /> + </button> + {:else} + <button + class="add" + aria-label="Remove Instance" + on:click={() => { + const index = _options[selectedFrontend].indexOf(instance) + if (index > -1) { + _options[selectedFrontend].splice(index, 1) + options.set(_options) + } + }} + > + <CloseIcon /> + </button> + {/if} </Row> <hr /> {/each} diff --git a/src/pages/options_src/Services/Services.svelte b/src/pages/options_src/Services/Services.svelte index db2977f9..dcc826fa 100644 --- a/src/pages/options_src/Services/Services.svelte +++ b/src/pages/options_src/Services/Services.svelte @@ -94,23 +94,23 @@ /> </Row> - <div style={!serviceOptions.enabled && "pointer-events: none;opacity: 0.4;user-select: none;"}> - <Row> - <Label>{browser.i18n.getMessage("showInPopup") || "Show in popup"}</Label> - <Checkbox - checked={_options.popupServices.includes(selectedService)} - onChange={e => { - if (e.target.checked && !_options.popupServices.includes(selectedService)) { - _options.popupServices.push(selectedService) - } else if (_options.popupServices.includes(selectedService)) { - const index = _options.popupServices.indexOf(selectedService) - if (index !== -1) _options.popupServices.splice(index, 1) - } - options.set(_options) - }} - /> - </Row> + <Row> + <Label>{browser.i18n.getMessage("showInPopup") || "Show in popup"}</Label> + <Checkbox + checked={_options.popupServices.includes(selectedService)} + onChange={e => { + if (e.target.checked && !_options.popupServices.includes(selectedService)) { + _options.popupServices.push(selectedService) + } else if (_options.popupServices.includes(selectedService)) { + const index = _options.popupServices.indexOf(selectedService) + if (index !== -1) _options.popupServices.splice(index, 1) + } + options.set(_options) + }} + /> + </Row> + <div style={!serviceOptions.enabled && "pointer-events: none;opacity: 0.4;user-select: none;"}> <Row> <Label> <a href={frontendWebsite} style="text-decoration: underline;" target="_blank" rel="noopener noreferrer"> |