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 --- src-tauri/src/main.rs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src-tauri') diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index d7ae9a4..bf7504d 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -586,6 +586,42 @@ async fn get_versions() -> Result, String> { } } +#[tauri::command] +async fn get_installed_versions(app_handle: tauri::AppHandle) -> Result, String> { + let game_dir = app_handle + .path() + .app_data_dir() + .map_err(|e| format!("Failed to get app data dir: {}", e))?; + + let versions_dir = game_dir.join("versions"); + + if !versions_dir.exists() { + return Ok(Vec::new()); + } + + let mut installed_versions = Vec::new(); + + if let Ok(entries) = std::fs::read_dir(versions_dir) { + for entry in entries { + if let Ok(entry) = entry { + if let Ok(file_type) = entry.file_type() { + if file_type.is_dir() { + if let Ok(file_name) = entry.file_name().into_string() { + // Optionally verify if {version_id}.json exists inside + let json_path = entry.path().join(format!("{}.json", file_name)); + if json_path.exists() { + installed_versions.push(file_name); + } + } + } + } + } + } + } + + Ok(installed_versions) +} + #[tauri::command] async fn login_offline( window: Window, @@ -784,6 +820,7 @@ fn main() { .invoke_handler(tauri::generate_handler![ start_game, get_versions, + get_installed_versions, login_offline, get_active_account, logout, -- cgit v1.2.3-70-g09d2 From 11a604f7e03d1a6f1b4ad381fdcf0ccaef440cff Mon Sep 17 00:00:00 2001 From: Natsuu Date: Wed, 14 Jan 2026 04:51:46 +0000 Subject: refactor: simplify get_installed_versions function by using iterator methods --- src-tauri/src/main.rs | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) (limited to 'src-tauri') diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index bf7504d..c1b882c 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -595,29 +595,23 @@ async fn get_installed_versions(app_handle: tauri::AppHandle) -> Result Date: Wed, 14 Jan 2026 13:05:38 +0800 Subject: Update src-tauri/src/main.rs Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> --- src-tauri/src/main.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src-tauri') diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index c1b882c..bb79f3e 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -594,9 +594,21 @@ async fn get_installed_versions(app_handle: tauri::AppHandle) -> Result entries, + Err(e) if e.kind() == std::io::ErrorKind::NotFound => { + // No versions directory yet; treat as "no versions installed" + return Ok(Vec::new()); + } + Err(e) => { + eprintln!( + "Failed to read versions directory {}: {}", + versions_dir.display(), + e + ); + return Err(format!("Failed to read versions directory: {}", e)); + } }; let installed_versions = entries -- cgit v1.2.3-70-g09d2