diff options
| author | JSON Derulo <136133082+xXJSONDeruloXx@users.noreply.github.com> | 2025-05-06 01:09:53 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-06 01:09:53 -0400 |
| commit | 358a0933031a1e862dc46194f75d1ec6d0ec26fc (patch) | |
| tree | e7788d357c7242a45ae9ccaee272d1ce3c3ce6ad /src/FetchReleases.ts | |
| parent | c226e87f77375ec5682834aaf9049a0076f3e9c2 (diff) | |
| parent | 431fb640d17faeef8d2a0a455392c39528205e11 (diff) | |
| download | decky-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.ts | 46 |
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; +} |
