summaryrefslogtreecommitdiff
path: root/static/releases.js
blob: d5ba50825ccc33d69d0e74a1b6c8f2fab85807ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
"use strict";

const devices = ["blueline", "crosshatch", "taimen", "walleye"];
const channels = ["stable", "beta"];

function createLink(href, text) {
    const link = document.createElement("a");
    link.appendChild(document.createTextNode(text));
    link.href = href;
    return link;
}

function deviceModel(device) {
    if (device === "blueline") {
        return "Pixel 3";
    }
    if (device === "crosshatch") {
        return "Pixel 3 XL";
    }
    if (device === "marlin") {
        return "Pixel XL";
    }
    if (device === "sailfish") {
        return "Pixel";
    }
    if (device === "taimen") {
        return "Pixel 2 XL";
    }
    if (device === "walleye") {
        return "Pixel 2";
    }
    return "Unknown";
}

for (const channel of channels) {
    for (const device of devices) {
        fetch("https://seamlessupdate.app/" + device + "-" + channel).then(response => {
            if (!response.ok) {
                return Promise.reject();
            }
            return response.text();
        }).then(text => {
            const metadata = text.trim().split(" ");
            const date = new Date(parseInt(metadata[1], 10) * 1000);
            const dateString = date.toISOString().replace("T", " ").replace("Z", "").split(".")[0];

            const baseUrl = "https://seamlessupdate.app/";

            const factoryFilename = device + "-factory-" + metadata[0] + ".zip";
            const factoryUrl = baseUrl + factoryFilename;

            const updateFilename = device + "-ota_update-" + metadata[0] + ".zip";
            const updateUrl = baseUrl + updateFilename;

            const list = document.getElementById(channel);

            const model = deviceModel(device);

            const release = document.createElement("div");
            release.dataset.model = model;

            const header = document.createElement("h3");
            header.appendChild(document.createTextNode(model));
            release.appendChild(header);

            const version = document.createElement("p");
            version.appendChild(document.createTextNode("Version: " + metadata[2] + "." + metadata[0]));
            release.appendChild(version);

            release.appendChild(createLink(factoryUrl, factoryFilename));
            release.appendChild(document.createElement("br"));
            release.appendChild(createLink(factoryUrl + ".sig", factoryFilename + ".sig"));
            release.appendChild(document.createElement("br"));
            release.appendChild(createLink(updateUrl, updateFilename));

            for (const item of list.children) {
                if (model < item.dataset.model) {
                    list.insertBefore(release, item);
                    return;
                }
            }

            list.appendChild(release);
        });
    }
}