chore: cleanup commands, fix osu folder check

This commit is contained in:
2026-02-16 20:46:58 +01:00
parent 0df31178f4
commit d9dd21d3be
+20 -43
View File
@@ -56,18 +56,12 @@ pub fn valid_osu_folder(folder: String) -> bool {
"scores.db", "scores.db",
]; ];
let folder_files: Vec<&str> = osu_folder_files.iter().map(|&s| s).collect();
if folder_files.iter().any(|&file| file == "osu!.exe") == false {
return false;
}
let path = PathBuf::from(folder); let path = PathBuf::from(folder);
let match_percentage = check_folder_completeness(path, &osu_folder_files) >= 70.0; if !path.join("osu!.exe").exists() {
if match_percentage {
return true;
}
return false; return false;
} }
check_folder_completeness(path, &osu_folder_files) >= 70.0
}
#[cfg(not(windows))] #[cfg(not(windows))]
#[tauri::command] #[tauri::command]
@@ -222,28 +216,28 @@ pub async fn get_skins_count(folder: String) -> Option<u64> {
#[tauri::command] #[tauri::command]
pub fn get_osu_skin(folder: String) -> String { pub fn get_osu_skin(folder: String) -> String {
let path = PathBuf::from(folder); let path = PathBuf::from(folder);
let osu_user_config = get_osu_user_config(path.clone()); let osu_user_config = get_osu_user_config(path);
return osu_user_config osu_user_config
.and_then(|config| config.get("Skin").cloned()) .and_then(|config| config.get("Skin").cloned())
.unwrap_or_else(|| "Default".to_string()); .unwrap_or_else(|| "Default".to_string())
} }
#[tauri::command] #[tauri::command]
pub fn get_osu_version(folder: String) -> String { pub fn get_osu_version(folder: String) -> String {
let path = PathBuf::from(folder); let path = PathBuf::from(folder);
let osu_user_config = get_osu_user_config(path.clone()); let osu_user_config = get_osu_user_config(path);
return osu_user_config osu_user_config
.and_then(|config| config.get("LastVersion").cloned()) .and_then(|config| config.get("LastVersion").cloned())
.unwrap_or_else(|| "failed".to_string()); .unwrap_or_else(|| "failed".to_string())
} }
#[tauri::command] #[tauri::command]
pub fn get_osu_release_stream(folder: String) -> String { pub fn get_osu_release_stream(folder: String) -> String {
let path = PathBuf::from(folder); let path = PathBuf::from(folder);
let osu_config = get_osu_config(path.clone()); let osu_config = get_osu_config(path);
return osu_config osu_config
.and_then(|config| config.get("_ReleaseStream").cloned()) .and_then(|config| config.get("_ReleaseStream").cloned())
.unwrap_or_else(|| "Stable40".to_string()); .unwrap_or_else(|| "Stable40".to_string())
} }
#[derive(serde::Deserialize)] #[derive(serde::Deserialize)]
@@ -261,10 +255,7 @@ pub fn set_osu_user_config_values(
.iter() .iter()
.map(|entry| (entry.key.as_str(), Some(entry.value.as_str()))) .map(|entry| (entry.key.as_str(), Some(entry.value.as_str())))
.collect(); .collect();
match set_osu_user_config_vals(&osu_folder_path, &converted) { Ok(set_osu_user_config_vals(&osu_folder_path, &converted).is_ok())
Ok(_) => Ok(true),
Err(_) => Ok(false),
}
} }
#[tauri::command] #[tauri::command]
@@ -276,22 +267,16 @@ pub fn set_osu_config_values(
.iter() .iter()
.map(|entry| (entry.key.as_str(), Some(entry.value.as_str()))) .map(|entry| (entry.key.as_str(), Some(entry.value.as_str())))
.collect(); .collect();
match set_osu_config_vals(&osu_folder_path, &converted) { Ok(set_osu_config_vals(&osu_folder_path, &converted).is_ok())
Ok(_) => Ok(true),
Err(_) => Ok(false),
}
} }
#[tauri::command] #[tauri::command]
pub async fn run_osu_updater(folder: String) -> Result<(), String> { pub async fn run_osu_updater(folder: String) -> Result<(), String> {
#[cfg(windows)]
const DETACHED_PROCESS: u32 = 0x00000008;
#[cfg(windows)]
const CREATE_NEW_PROCESS_GROUP: u32 = 0x00000200;
let mut updater_process = { let mut updater_process = {
#[cfg(windows)] #[cfg(windows)]
{ {
const DETACHED_PROCESS: u32 = 0x00000008;
const CREATE_NEW_PROCESS_GROUP: u32 = 0x00000200;
let osu_exe_path = PathBuf::from(&folder).join("osu!.exe"); let osu_exe_path = PathBuf::from(&folder).join("osu!.exe");
Command::new(&osu_exe_path) Command::new(&osu_exe_path)
.arg("-repair") .arg("-repair")
@@ -368,9 +353,6 @@ pub async fn run_osu_updater(folder: String) -> Result<(), String> {
#[tauri::command] #[tauri::command]
pub async fn run_osu(folder: String, patch: bool) -> Result<(), String> { pub async fn run_osu(folder: String, patch: bool) -> Result<(), String> {
/* #[cfg(windows)]
use std::os::windows::process::CommandExt; */
#[cfg(windows)] #[cfg(windows)]
const DETACHED_PROCESS: u32 = 0x00000008; const DETACHED_PROCESS: u32 = 0x00000008;
#[cfg(windows)] #[cfg(windows)]
@@ -385,7 +367,7 @@ pub async fn run_osu(folder: String, patch: bool) -> Result<(), String> {
.arg("ez-pp.farm") .arg("ez-pp.farm")
.creation_flags(DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP) .creation_flags(DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP)
.spawn() .spawn()
.map_err(|e| format!("Failed to spawn updater: {}", e))? .map_err(|e| format!("Failed to spawn osu: {}", e))?
} }
#[cfg(not(windows))] #[cfg(not(windows))]
@@ -394,7 +376,7 @@ pub async fn run_osu(folder: String, patch: bool) -> Result<(), String> {
.arg("--devserver") .arg("--devserver")
.arg("ez-pp.farm") .arg("ez-pp.farm")
.spawn() .spawn()
.map_err(|e| format!("Failed to spawn updater: {}", e))? .map_err(|e| format!("Failed to spawn osu: {}", e))?
} }
}; };
@@ -732,12 +714,7 @@ pub async fn has_net8() -> bool {
#[tauri::command] #[tauri::command]
pub fn encrypt_string(string: String, entropy: String) -> String { pub fn encrypt_string(string: String, entropy: String) -> String {
let encrypted = encrypt_password(&string, &entropy); encrypt_password(&string, &entropy).unwrap_or(string)
match encrypted {
Ok(encrypted_vec) => encrypted_vec,
Err(_) => string,
}
} }
#[tauri::command] #[tauri::command]
@@ -773,7 +750,7 @@ pub async fn download_ezpp_launcher_update(app: AppHandle, url: String) -> Resul
UpdateStatus { UpdateStatus {
file_name: "Update".to_string(), file_name: "Update".to_string(),
downloaded, downloaded,
size: size, size,
progress: ((downloaded as f64 / size as f64 * 100.0) * 100.0).trunc() / 100.0, progress: ((downloaded as f64 / size as f64 * 100.0) * 100.0).trunc() / 100.0,
}, },
) )