From cd82fabfac3120179f947fba331025676dc1af7f Mon Sep 17 00:00:00 2001 From: Natsuu Date: Wed, 14 Jan 2026 04:40:03 +0000 Subject: feat: add functionality to retrieve installed game versions --- ui/src/stores/game.svelte.ts | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'ui/src/stores') 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([]); + installedVersionIds = $state([]); selectedVersion = $state(""); async loadVersions() { try { - this.versions = await invoke("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("get_versions"), + invoke("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); -- cgit v1.2.3-70-g09d2 From b2a25fe989314fcbea4ddb7f50cb17b3414418c2 Mon Sep 17 00:00:00 2001 From: Natsuu Date: Wed, 14 Jan 2026 04:59:37 +0000 Subject: fix: ensure selectedVersion is reset when no installed versions are found --- ui/src/stores/game.svelte.ts | 2 ++ 1 file changed, 2 insertions(+) (limited to 'ui/src/stores') diff --git a/ui/src/stores/game.svelte.ts b/ui/src/stores/game.svelte.ts index 3128cc6..f66cc71 100644 --- a/ui/src/stores/game.svelte.ts +++ b/ui/src/stores/game.svelte.ts @@ -35,6 +35,8 @@ export class GameState { // Fallback to just the first ID if not in manifest this.selectedVersion = this.installedVersionIds[0]; } + } else { + this.selectedVersion = ""; } } catch (e) { console.error("Failed to fetch versions:", e); -- cgit v1.2.3-70-g09d2