aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/src/stores
diff options
context:
space:
mode:
authorNatsuu <natsukawa247@outlook.com>2026-01-14 04:40:03 +0000
committerNatsuu <natsukawa247@outlook.com>2026-01-14 04:40:03 +0000
commitcd82fabfac3120179f947fba331025676dc1af7f (patch)
tree531cf91f50ed494c36e70b5b9c47245e809e81cc /ui/src/stores
parente8e139c07d05e2f29f04906019dff5f3c520f8cc (diff)
downloadDropOut-cd82fabfac3120179f947fba331025676dc1af7f.tar.gz
DropOut-cd82fabfac3120179f947fba331025676dc1af7f.zip
feat: add functionality to retrieve installed game versions
Diffstat (limited to 'ui/src/stores')
-rw-r--r--ui/src/stores/game.svelte.ts30
1 files changed, 26 insertions, 4 deletions
diff --git a/ui/src/stores/game.svelte.ts b/ui/src/stores/game.svelte.ts
index 0af3daf..3128cc6 100644
--- a/ui/src/stores/game.svelte.ts
+++ b/ui/src/stores/game.svelte.ts
@@ -5,14 +5,36 @@ import { authState } from "./auth.svelte";
export class GameState {
versions = $state<Version[]>([]);
+ installedVersionIds = $state<string[]>([]);
selectedVersion = $state("");
async loadVersions() {
try {
- this.versions = await invoke<Version[]>("get_versions");
- if (this.versions.length > 0) {
- const latest = this.versions.find((v) => v.type === "release");
- this.selectedVersion = latest ? latest.id : this.versions[0].id;
+ // Fetch both full version list and installed versions
+ const [allVersions, installedIds] = await Promise.all([
+ invoke<Version[]>("get_versions"),
+ invoke<string[]>("get_installed_versions")
+ ]);
+
+ this.versions = allVersions;
+ this.installedVersionIds = installedIds;
+
+ if (this.installedVersionIds.length > 0) {
+ // Find the first installed version that appears in our manifest (preserving order)
+ // Usually we want the latest release that is installed
+ const installedVersions = this.versions.filter(v => this.installedVersionIds.includes(v.id));
+
+ // Try to find latest release among installed
+ const latestInstalledRelease = installedVersions.find(v => v.type === "release");
+
+ if (latestInstalledRelease) {
+ this.selectedVersion = latestInstalledRelease.id;
+ } else if (installedVersions.length > 0) {
+ this.selectedVersion = installedVersions[0].id;
+ } else {
+ // Fallback to just the first ID if not in manifest
+ this.selectedVersion = this.installedVersionIds[0];
+ }
}
} catch (e) {
console.error("Failed to fetch versions:", e);