aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src/core/java/mod.rs
diff options
context:
space:
mode:
authorBegonia, HE <163421589+BegoniaHe@users.noreply.github.com>2026-01-26 19:03:49 +0100
committerBegonia, HE <163421589+BegoniaHe@users.noreply.github.com>2026-01-29 03:01:26 +0100
commit6bb967f05b2dd32dc1cd1b849a6089bc80667aec (patch)
tree604075accba8b472efc9d8c90db65e62030c72d2 /src-tauri/src/core/java/mod.rs
parent2c90c392114a8948190e4253f0cae9379f3a614d (diff)
downloadDropOut-6bb967f05b2dd32dc1cd1b849a6089bc80667aec.tar.gz
DropOut-6bb967f05b2dd32dc1cd1b849a6089bc80667aec.zip
refactor(java): simplify version compatibility logic and improve error handling
- Extract version compatibility check into shared validation function - Remove duplicated version checking code across multiple modules - Simplify Java detection timeout logic in detection.rs - Expand vendor detection to support more JDK distributions (Dragonwell, Kona, Semeru, BiSheng, etc.) - Refactor start_game to use priority-based Java resolution - Improve error handling in Adoptium provider task collection Reviewed-by: Claude Sonnet 4.5
Diffstat (limited to 'src-tauri/src/core/java/mod.rs')
-rw-r--r--src-tauri/src/core/java/mod.rs46
1 files changed, 11 insertions, 35 deletions
diff --git a/src-tauri/src/core/java/mod.rs b/src-tauri/src/core/java/mod.rs
index 05bf734..c88cd1c 100644
--- a/src-tauri/src/core/java/mod.rs
+++ b/src-tauri/src/core/java/mod.rs
@@ -362,24 +362,10 @@ pub async fn get_compatible_java(
) -> Option<JavaInstallation> {
let installations = detect_all_java_installations(app_handle).await;
- if let Some(max_version) = max_major_version {
- installations.into_iter().find(|java| {
- let major = validation::parse_java_version(&java.version);
- let meets_min = if let Some(required) = required_major_version {
- major >= required as u32
- } else {
- true
- };
- meets_min && major <= max_version
- })
- } else if let Some(required) = required_major_version {
- installations.into_iter().find(|java| {
- let major = validation::parse_java_version(&java.version);
- major >= required as u32
- })
- } else {
- installations.into_iter().next()
- }
+ installations.into_iter().find(|java| {
+ let major = validation::parse_java_version(&java.version);
+ validation::is_version_compatible(major, required_major_version, max_major_version)
+ })
}
pub async fn is_java_compatible(
@@ -387,23 +373,13 @@ pub async fn is_java_compatible(
required_major_version: Option<u64>,
max_major_version: Option<u32>,
) -> bool {
- let java_path_buf = PathBuf::from(java_path);
- if let Some(java) = validation::check_java_installation(&java_path_buf).await {
- let major = validation::parse_java_version(&java.version);
- let meets_min = if let Some(required) = required_major_version {
- major >= required as u32
- } else {
- true
- };
- let meets_max = if let Some(max_version) = max_major_version {
- major <= max_version
- } else {
- true
- };
- meets_min && meets_max
- } else {
- false
- }
+ let java_path_buf = PathBuf::from(java_path);
+ if let Some(java) = validation::check_java_installation(&java_path_buf).await {
+ let major = validation::parse_java_version(&java.version);
+ validation::is_version_compatible(major, required_major_version, max_major_version)
+ } else {
+ false
+ }
}
pub async fn detect_all_java_installations(app_handle: &AppHandle) -> Vec<JavaInstallation> {