hakurei.app/static/js/releases.js
2023-10-12 07:21:30 -04:00

50 lines
1.8 KiB
JavaScript

// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT
const baseUrl = "https://releases.grapheneos.org/";
const devices = ["husky", "shiba", "felix", "tangorpro", "lynx", "cheetah", "panther", "bluejay", "raven", "oriole", "barbet", "redfin", "bramble", "sunfish", "coral", "flame"];
const channels = ["stable", "beta"];
const delayMs = 1000 * 60 * 5;
function updateLink(link, text, url) {
link.innerText = text;
link.setAttribute("href", url);
}
async function updateReleases() {
const requests = [];
for (const channel of channels) {
for (const device of devices) {
requests.push(fetch(baseUrl + device + "-" + channel).then(response => {
if (!response.ok) {
return Promise.reject();
}
return response.text();
}).then(text => {
const metadata = text.trim().split(" ");
const factoryFilename = device + "-factory-" + metadata[0] + ".zip";
const factoryUrl = baseUrl + factoryFilename;
const updateFilename = device + "-ota_update-" + metadata[0] + ".zip";
const updateUrl = baseUrl + updateFilename;
const release = document.getElementById(device + "-" + channel);
const links = release.getElementsByTagName("a");
updateLink(links[1], metadata[0], "#" + metadata[0]);
updateLink(links[2], factoryFilename, factoryUrl);
updateLink(links[3], factoryFilename + ".sig", factoryUrl + ".sig");
updateLink(links[4], updateFilename, updateUrl);
}));
}
}
await Promise.allSettled(requests);
setTimeout(updateReleases, delayMs);
}
setTimeout(updateReleases, delayMs);
// @license-end