blob: 9928d379e46f7c788ac64b9023ee7dd81bfdb2b3 (
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
|
import {callable} from "@decky/api";
const getBazziteBranch = callable<[], string>("get_bazzite_branch");
export async function isBazziteBranchTesting() {
const branch = await getBazziteBranch();
return branch === "testing";
}
export async function* fetchReleases(signal?: AbortSignal) {
const testing = await isBazziteBranchTesting();
let currentPage = 1;
let done = false;
while (!done) {
let response: Response;
let responseJson: any;
try {
response = await fetch(
`https://api.github.com/repos/ublue-os/bazzite/releases?page=${currentPage++}&per_page=10`,
{ signal });
if (response.ok) {
responseJson = await response.json();
} else {
responseJson = [];
}
} catch {
responseJson = [];
}
if (!Array.isArray(responseJson) || responseJson.length == 0) {
done = true;
} else {
responseJson.sort((a, b) => (new Date(b.created_at)).getTime() - (new Date(a.created_at)).getTime());
for (let release of responseJson) {
if (release && ((testing && release.prerelease) || (!testing && !release.prerelease)))
yield release;
}
}
}
return undefined;
}
|