From a4f4cc2f274ff3c0d6caf11686df6f3ae714458e Mon Sep 17 00:00:00 2001 From: zhom <2717306+zhom@users.noreply.github.com> Date: Fri, 6 Jun 2025 04:41:50 +0400 Subject: [PATCH] style: clean up settings dialog --- src-tauri/src/browser_runner.rs | 8 ----- src-tauri/src/lib.rs | 11 +++--- src-tauri/src/settings_manager.rs | 27 +++++++++++++-- src/components/settings-dialog.tsx | 55 ++++++------------------------ 4 files changed, 41 insertions(+), 60 deletions(-) diff --git a/src-tauri/src/browser_runner.rs b/src-tauri/src/browser_runner.rs index b85bc99..b779097 100644 --- a/src-tauri/src/browser_runner.rs +++ b/src-tauri/src/browser_runner.rs @@ -2377,14 +2377,6 @@ pub fn get_downloaded_browser_versions(browser_str: String) -> Result Result, String> { - let browser_runner = BrowserRunner::new(); - browser_runner - .cleanup_unused_binaries_internal() - .map_err(|e| format!("Failed to cleanup unused binaries: {e}")) -} - #[cfg(test)] mod tests { use super::*; diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 135ea05..1cc96f6 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -25,7 +25,7 @@ mod version_updater; extern crate lazy_static; use browser_runner::{ - check_browser_exists, check_browser_status, cleanup_unused_binaries, create_browser_profile_new, + check_browser_exists, check_browser_status, create_browser_profile_new, delete_profile, download_browser, fetch_browser_versions_cached_first, fetch_browser_versions_with_count, fetch_browser_versions_with_count_cached_first, get_downloaded_browser_versions, get_supported_browsers, is_browser_supported_on_platform, @@ -34,8 +34,9 @@ use browser_runner::{ }; use settings_manager::{ - clear_all_version_cache, get_app_settings, get_table_sorting_settings, save_app_settings, - save_table_sorting_settings, should_show_settings_on_startup, + clear_all_version_cache_and_refetch, get_app_settings, + get_table_sorting_settings, save_app_settings, save_table_sorting_settings, + should_show_settings_on_startup, }; use default_browser::{ @@ -276,7 +277,7 @@ pub fn run() { download_browser, delete_profile, check_browser_exists, - cleanup_unused_binaries, + create_browser_profile_new, list_browser_profiles, launch_browser_profile, @@ -294,7 +295,7 @@ pub fn run() { should_show_settings_on_startup, get_table_sorting_settings, save_table_sorting_settings, - clear_all_version_cache, + clear_all_version_cache_and_refetch, is_default_browser, open_url_with_profile, set_as_default_browser, diff --git a/src-tauri/src/settings_manager.rs b/src-tauri/src/settings_manager.rs index ed52dad..c9123d6 100644 --- a/src-tauri/src/settings_manager.rs +++ b/src-tauri/src/settings_manager.rs @@ -4,6 +4,7 @@ use std::fs::{self, create_dir_all}; use std::path::PathBuf; use crate::api_client::ApiClient; +use crate::browser_version_service::BrowserVersionService; #[derive(Debug, Serialize, Deserialize, Clone)] pub struct TableSortingSettings { @@ -215,9 +216,31 @@ pub async fn save_table_sorting_settings(sorting: TableSortingSettings) -> Resul } #[tauri::command] -pub async fn clear_all_version_cache() -> Result<(), String> { +pub async fn clear_all_version_cache_and_refetch() -> Result<(), String> { let api_client = ApiClient::new(); + + // Clear all cache first api_client .clear_all_cache() - .map_err(|e| format!("Failed to clear version cache: {e}")) + .map_err(|e| format!("Failed to clear version cache: {e}"))?; + + // Trigger auto-fetch for all supported browsers + let service = BrowserVersionService::new(); + let supported_browsers = service.get_supported_browsers(); + + for browser in supported_browsers { + // Start background fetch for each browser (don't wait for completion) + let service_clone = BrowserVersionService::new(); + let browser_clone = browser.clone(); + tokio::spawn(async move { + if let Err(e) = service_clone + .fetch_browser_versions_detailed(&browser_clone, false) + .await + { + eprintln!("Background version fetch failed for {browser_clone}: {e}"); + } + }); + } + + Ok(()) } diff --git a/src/components/settings-dialog.tsx b/src/components/settings-dialog.tsx index 760b5cf..0f55bf3 100644 --- a/src/components/settings-dialog.tsx +++ b/src/components/settings-dialog.tsx @@ -19,6 +19,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { showSuccessToast } from "@/lib/toast-utils"; import { invoke } from "@tauri-apps/api/core"; import { useTheme } from "next-themes"; import { useEffect, useState } from "react"; @@ -56,7 +57,6 @@ export function SettingsDialog({ isOpen, onClose }: SettingsDialogProps) { const [isSaving, setIsSaving] = useState(false); const [isSettingDefault, setIsSettingDefault] = useState(false); const [isClearingCache, setIsClearingCache] = useState(false); - const [isCleaningBinaries, setIsCleaningBinaries] = useState(false); const { setTheme } = useTheme(); @@ -114,9 +114,12 @@ export function SettingsDialog({ isOpen, onClose }: SettingsDialogProps) { const handleClearCache = async () => { setIsClearingCache(true); try { - await invoke("clear_all_version_cache"); - // Optionally show a success message - console.log("Cache cleared successfully"); + await invoke("clear_all_version_cache_and_refetch"); + showSuccessToast("Cache cleared successfully", { + description: + "All browser version cache has been cleared and browsers are being refreshed", + duration: 4000, + }); } catch (error) { console.error("Failed to clear cache:", error); } finally { @@ -124,31 +127,10 @@ export function SettingsDialog({ isOpen, onClose }: SettingsDialogProps) { } }; - const handleCleanupBinaries = async () => { - setIsCleaningBinaries(true); - try { - const cleanedUp = await invoke("cleanup_unused_binaries"); - if (cleanedUp.length > 0) { - console.log( - `Cleaned up ${cleanedUp.length} unused binaries:`, - cleanedUp, - ); - // You could show a toast with the results - } else { - console.log("No unused binaries to clean up"); - } - } catch (error) { - console.error("Failed to cleanup unused binaries:", error); - } finally { - setIsCleaningBinaries(false); - } - }; - const handleSave = async () => { setIsSaving(true); try { await invoke("save_app_settings", { settings }); - // Apply theme change immediately setTheme(settings.theme); setOriginalSettings(settings); onClose(); @@ -318,26 +300,9 @@ export function SettingsDialog({ isOpen, onClose }: SettingsDialogProps) {

- Clear all cached browser version data. This will force a fresh - download of version information on the next app restart or manual - refresh. -

- - { - void handleCleanupBinaries(); - }} - variant="outline" - className="w-full" - > - Clean Up Unused Binaries - - -

- Manually remove browser binaries that are not used by any profile. - This can help free up disk space. Note: This will run - automatically when the setting above is enabled. + Clear all cached browser version data and refresh all browser + versions from their sources. This will force a fresh download of + version information for all browsers.