summaryrefslogtreecommitdiff
path: root/src/FetchReleases.ts
diff options
context:
space:
mode:
authorJSON Derulo <136133082+xXJSONDeruloXx@users.noreply.github.com>2025-05-06 01:09:53 -0400
committerGitHub <noreply@github.com>2025-05-06 01:09:53 -0400
commit358a0933031a1e862dc46194f75d1ec6d0ec26fc (patch)
treee7788d357c7242a45ae9ccaee272d1ce3c3ce6ad /src/FetchReleases.ts
parentc226e87f77375ec5682834aaf9049a0076f3e9c2 (diff)
parent431fb640d17faeef8d2a0a455392c39528205e11 (diff)
downloaddecky-bazzite-buddy-358a0933031a1e862dc46194f75d1ec6d0ec26fc.tar.gz
decky-bazzite-buddy-358a0933031a1e862dc46194f75d1ec6d0ec26fc.zip
Merge pull request #4 from victor-borges/main
Diffstat (limited to 'src/FetchReleases.ts')
-rw-r--r--src/FetchReleases.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/FetchReleases.ts b/src/FetchReleases.ts
new file mode 100644
index 0000000..9928d37
--- /dev/null
+++ b/src/FetchReleases.ts
@@ -0,0 +1,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;
+}