refactor: check for camoufox inside install dir directly

This commit is contained in:
zhom
2025-08-09 08:51:36 +04:00
parent 8d9654044a
commit 467e82ca93
4 changed files with 20 additions and 11 deletions
+2
View File
@@ -25,6 +25,7 @@
"cmdk",
"codegen",
"codesign",
"commitish",
"CTYPE",
"daijro",
"dataclasses",
@@ -178,6 +179,7 @@
"xfconf",
"xsettings",
"zhom",
"zipball",
"zoneinfo"
]
}
+7 -11
View File
@@ -168,7 +168,7 @@ mod linux {
install_dir: &Path,
browser_type: &BrowserType,
) -> Result<PathBuf, Box<dyn std::error::Error>> {
// Expected structure: install_dir/<browser>/<binary>
// Expected structure by default: install_dir/<browser>/<binary>
let browser_subdir = install_dir.join(browser_type.as_str());
// Try firefox first (preferred), then firefox-bin
@@ -198,8 +198,8 @@ mod linux {
}
BrowserType::Camoufox => {
vec![
browser_subdir.join("camoufox-bin"),
browser_subdir.join("camoufox"),
install_dir.join("camoufox-bin"),
install_dir.join("camoufox"),
]
}
_ => vec![],
@@ -213,9 +213,9 @@ mod linux {
Err(
format!(
"Firefox executable not found in {}/{}",
"Executable not found for {} in {}",
browser_type.as_str(),
install_dir.display(),
browser_type.as_str()
)
.into(),
)
@@ -256,10 +256,6 @@ mod linux {
// Expected structure: install_dir/<browser>/<binary>
let browser_subdir = install_dir.join(browser_type.as_str());
if !browser_subdir.exists() || !browser_subdir.is_dir() {
return false;
}
let possible_executables = match browser_type {
BrowserType::Firefox | BrowserType::FirefoxDeveloper => {
vec![
@@ -286,8 +282,8 @@ mod linux {
}
BrowserType::Camoufox => {
vec![
browser_subdir.join("camoufox-bin"),
browser_subdir.join("camoufox"),
install_dir.join("camoufox-bin"),
install_dir.join("camoufox"),
]
}
_ => vec![],
+6
View File
@@ -45,6 +45,12 @@ impl Extractor {
return Ok(());
};
// For Camoufox on Linux, we expect the executable directly under version directory
// e.g., binaries/camoufox/<version>/camoufox, without an extra camoufox/ subdirectory
if browser_type == "camoufox" {
return Ok(());
}
let expected_subdir = dest_dir.join(browser_type);
// If the executable is not in the expected subdirectory, create the structure
+5
View File
@@ -603,6 +603,11 @@ impl ProfileManager {
})?;
}
// Emit profile update event so frontend UIs can refresh immediately (e.g. proxy manager)
if let Err(e) = app_handle.emit("profile-updated", &profile) {
println!("Warning: Failed to emit profile update event: {e}");
}
Ok(profile)
}