aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2026-01-14 14:17:34 +0800
committerGitHub <noreply@github.com>2026-01-14 14:17:34 +0800
commit45551629e1f84060d56efb3e9b362af10a1caded (patch)
treec0d540a2ed18f6c62e0661437490579d5ba30e17 /src-tauri/src
parentd689d0b8d33ad9d3bc5c235bbfb3ce792efe7536 (diff)
parent7854f1247d8f172cfd5011895100c2c69c34878f (diff)
downloadDropOut-45551629e1f84060d56efb3e9b362af10a1caded.tar.gz
DropOut-45551629e1f84060d56efb3e9b362af10a1caded.zip
Merge pull request #16 from NtskwK/feat/enabled-version
Diffstat (limited to 'src-tauri/src')
-rw-r--r--src-tauri/src/main.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index 73310d5..53d9388 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -587,6 +587,48 @@ async fn get_versions() -> Result<Vec<core::manifest::Version>, String> {
}
#[tauri::command]
+async fn get_installed_versions(app_handle: tauri::AppHandle) -> Result<Vec<String>, 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");
+
+ let entries = match std::fs::read_dir(&versions_dir) {
+ Ok(entries) => 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
+ .flatten()
+ .filter(|entry| entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false))
+ .filter_map(|entry| {
+ let file_name = entry.file_name().into_string().ok()?;
+ let json_path = entry.path().join(format!("{}.json", file_name));
+ if json_path.exists() {
+ Some(file_name)
+ } else {
+ None
+ }
+ })
+ .collect();
+
+ Ok(installed_versions)
+}
+
+#[tauri::command]
async fn login_offline(
window: Window,
state: State<'_, core::auth::AccountState>,
@@ -784,6 +826,7 @@ fn main() {
.invoke_handler(tauri::generate_handler![
start_game,
get_versions,
+ get_installed_versions,
login_offline,
get_active_account,
logout,