aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/options_src
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/options_src')
-rw-r--r--src/pages/options_src/General/SettingsButtons.svelte2
-rw-r--r--src/pages/options_src/Services/Instances.svelte93
-rw-r--r--src/pages/options_src/Services/Services.svelte32
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">