diff --git a/src-tauri/src/api_client.rs b/src-tauri/src/api_client.rs index 301a39b..4c60f10 100644 --- a/src-tauri/src/api_client.rs +++ b/src-tauri/src/api_client.rs @@ -334,15 +334,21 @@ pub struct ApiClient { } impl ApiClient { - fn new() -> Self { + pub fn new() -> Self { + let client = Client::builder() + .timeout(std::time::Duration::from_secs(30)) + .build() + .unwrap_or_else(|_| Client::new()); + Self { - client: Client::new(), + client, firefox_api_base: "https://product-details.mozilla.org/1.0".to_string(), firefox_dev_api_base: "https://product-details.mozilla.org/1.0".to_string(), github_api_base: "https://api.github.com".to_string(), chromium_api_base: "https://commondatastorage.googleapis.com/chromium-browser-snapshots" .to_string(), - tor_archive_base: "https://archive.torproject.org/tor-package-archive/torbrowser".to_string(), + tor_archive_base: "https://archive.torproject.org/tor-package-archive/torbrowser" + .to_string(), } } @@ -653,13 +659,12 @@ impl ApiClient { .await?; if !response.status().is_success() { - return Err( - format!( - "Failed to fetch Firefox Developer Edition versions: {}", - response.status() - ) - .into(), + let error_msg = format!( + "Failed to fetch Firefox Developer Edition versions: {} - URL: {}", + response.status(), url ); + eprintln!("{}", error_msg); + return Err(error_msg.into()); } let firefox_response: FirefoxApiResponse = response.json().await?; diff --git a/src/components/create-profile-dialog.tsx b/src/components/create-profile-dialog.tsx index 2d2daf0..07acdcc 100644 --- a/src/components/create-profile-dialog.tsx +++ b/src/components/create-profile-dialog.tsx @@ -236,10 +236,14 @@ export function CreateProfileDialog({ // Load data when dialog opens useEffect(() => { if (isOpen) { + // Ensure we have a selected browser + if (!selectedBrowser) { + setSelectedBrowser("camoufox"); + } void loadSupportedBrowsers(); void loadStoredProxies(); // Load camoufox release types when dialog opens - void loadReleaseTypes("camoufox"); + void loadReleaseTypes(selectedBrowser || "camoufox"); // Check and download GeoIP database if needed for Camoufox void checkAndDownloadGeoIPDatabase(); } @@ -249,6 +253,7 @@ export function CreateProfileDialog({ loadStoredProxies, loadReleaseTypes, checkAndDownloadGeoIPDatabase, + selectedBrowser, ]); // Load release types when browser selection changes @@ -361,7 +366,7 @@ export function CreateProfileDialog({ // Reset all states setProfileName(""); - setSelectedBrowser(null); + setSelectedBrowser("camoufox"); // Set default browser instead of null setSelectedProxyId(undefined); setReleaseTypes({}); setCamoufoxConfig({