diff options
| author | Victor Borges <victor1882@outlook.com> | 2025-05-03 15:19:10 -0300 |
|---|---|---|
| committer | Victor Borges <victor1882@outlook.com> | 2025-05-03 15:19:10 -0300 |
| commit | d97d5f11e7807906cff2cf41cad815fb05b0096c (patch) | |
| tree | f5782c1785fa35586be12d871cfc00a35f0569a5 /src/FetchReleases.ts | |
| parent | ba7a86099b321f378b9d18ea025af9730642d8bf (diff) | |
| download | decky-bazzite-buddy-d97d5f11e7807906cff2cf41cad815fb05b0096c.tar.gz decky-bazzite-buddy-d97d5f11e7807906cff2cf41cad815fb05b0096c.zip | |
gets the correct branch now
Diffstat (limited to 'src/FetchReleases.ts')
| -rw-r--r-- | src/FetchReleases.ts | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/FetchReleases.ts b/src/FetchReleases.ts new file mode 100644 index 0000000..04f42d6 --- /dev/null +++ b/src/FetchReleases.ts @@ -0,0 +1,47 @@ +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 branch = await getBazziteBranch(); + const testing = branch === "stable"; + 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; +} |
