Add download limit bar on file viewer

This commit is contained in:
2022-12-24 11:37:02 +01:00
parent 5729bb81f6
commit 34ede38889
13 changed files with 196 additions and 142 deletions

View File

@@ -0,0 +1,62 @@
import { readable } from 'svelte/store';
let limits = {
download_limit: 0,
download_limit_used: 0,
transfer_limit: 0,
transfer_limit_used: 0,
ipv6_bonus: 0,
loaded: false,
}
export const download_limits = readable(
limits,
function start(set) {
set_func = set;
loop();
return function stop() {
clearTimeout(timeout_ref);
};
}
);
let set_func;
let timeout_ref = 0;
let timeout_ms = 10000;
const loop = async () => {
let new_limits;
try {
let resp = await fetch(window.api_endpoint + "/misc/rate_limits")
if (resp.status >= 400) {
throw new Error(await resp.text())
}
new_limits = await resp.json()
new_limits.loaded = true
} catch (err) {
console.error("Failed to get rate limits: " + err)
timeout_ref = setTimeout(loop, 30000)
return
}
// If the usage has not changed we increase the timeout with one second. If
// it did change we halve the timeout
if (new_limits.transfer_limit_used === limits.transfer_limit_used) {
timeout_ms += 1000
if (timeout_ms > 60000) {
timeout_ms = 60000
}
} else {
timeout_ms /= 2
if (timeout_ms < 5000) {
timeout_ms = 5000
}
limits = new_limits
set_func(new_limits)
}
console.debug("Sleep", timeout_ms / 1000, "seconds")
timeout_ref = setTimeout(loop, timeout_ms)
}