a1bbeb6054
just use on my own account edit my own messages
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
var cache = new Map();
|
|
|
|
export async function resolveServer(hs_name) {
|
|
var server = cache.get(hs_name);
|
|
if (server) return server;
|
|
try {
|
|
let res = await fetch(`https://${hs_name}/.well-known/matrix/server`);
|
|
let json = await res.json();
|
|
var server = json["m.server"];
|
|
} catch (error) {
|
|
console.warn(`Failed look up delegated server for ${hs_name}`, error.message);
|
|
}
|
|
if (!server) server = server.includes(':') ? server : server + ":8448";
|
|
cache.set(hs_name, server);
|
|
return server;
|
|
}
|
|
|
|
export function formatBytes(bytes, decimals = 3) {
|
|
if (bytes == undefined) return bytes;
|
|
if (bytes == 0) return "0 Bytes";
|
|
const k = 1024;
|
|
const dm = decimals < 0 ? 0 : decimals;
|
|
const sizes = ['Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];
|
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
|
|
}
|
|
|
|
var durationFormat = new Intl.DurationFormat("en", {style: "digital"});
|
|
export function formatDuration(ms) {
|
|
return durationFormat.format({
|
|
hours: Math.floor(ms / (1000 * 60 * 60)),
|
|
minutes: Math.floor((ms / (1000 * 60)) % 60),
|
|
seconds: Math.floor((ms / 1000) % 60)
|
|
});
|
|
} |