refactor: partially migrate to singleton pattern

This commit is contained in:
zhom
2025-07-31 22:29:08 +04:00
parent 4997854577
commit 5b31cfaf32
9 changed files with 131 additions and 1032 deletions
+10 -10
View File
@@ -137,7 +137,7 @@ impl BrowserRunner {
local_proxy_settings: Option<&ProxySettings>,
) -> Result<BrowserProfile, Box<dyn std::error::Error + Send + Sync>> {
// Check if browser is disabled due to ongoing update
let auto_updater = crate::auto_updater::AutoUpdater::new();
let auto_updater = crate::auto_updater::AutoUpdater::instance();
if auto_updater.is_browser_disabled(&profile.browser)? {
return Err(
format!(
@@ -1094,7 +1094,7 @@ impl BrowserRunner {
}
// Check if browser is supported on current platform before attempting download
let version_service = BrowserVersionService::new();
let version_service = BrowserVersionService::instance();
if !version_service
.is_browser_supported(&browser_str)
@@ -1491,13 +1491,13 @@ pub fn delete_profile(_app_handle: tauri::AppHandle, profile_name: String) -> Re
#[tauri::command]
pub fn get_supported_browsers() -> Result<Vec<String>, String> {
let service = BrowserVersionService::new();
let service = BrowserVersionService::instance();
Ok(service.get_supported_browsers())
}
#[tauri::command]
pub fn is_browser_supported_on_platform(browser_str: String) -> Result<bool, String> {
let service = BrowserVersionService::new();
let service = BrowserVersionService::instance();
service
.is_browser_supported(&browser_str)
.map_err(|e| format!("Failed to check browser support: {e}"))
@@ -1507,14 +1507,14 @@ pub fn is_browser_supported_on_platform(browser_str: String) -> Result<bool, Str
pub async fn fetch_browser_versions_cached_first(
browser_str: String,
) -> Result<Vec<BrowserVersionInfo>, String> {
let service = BrowserVersionService::new();
let service = BrowserVersionService::instance();
// Get cached versions immediately if available
if let Some(cached_versions) = service.get_cached_browser_versions_detailed(&browser_str) {
// Check if we should update cache in background
if service.should_update_cache(&browser_str) {
// Start background update but return cached data immediately
let service_clone = BrowserVersionService::new();
let service_clone = BrowserVersionService::instance();
let browser_str_clone = browser_str.clone();
tokio::spawn(async move {
if let Err(e) = service_clone
@@ -1539,14 +1539,14 @@ pub async fn fetch_browser_versions_cached_first(
pub async fn fetch_browser_versions_with_count_cached_first(
browser_str: String,
) -> Result<BrowserVersionsResult, String> {
let service = BrowserVersionService::new();
let service = BrowserVersionService::instance();
// Get cached versions immediately if available
if let Some(cached_versions) = service.get_cached_browser_versions(&browser_str) {
// Check if we should update cache in background
if service.should_update_cache(&browser_str) {
// Start background update but return cached data immediately
let service_clone = BrowserVersionService::new();
let service_clone = BrowserVersionService::instance();
let browser_str_clone = browser_str.clone();
tokio::spawn(async move {
if let Err(e) = service_clone
@@ -1648,7 +1648,7 @@ pub async fn update_camoufox_config(
pub async fn fetch_browser_versions_with_count(
browser_str: String,
) -> Result<BrowserVersionsResult, String> {
let service = BrowserVersionService::new();
let service = BrowserVersionService::instance();
service
.fetch_browser_versions_with_count(&browser_str, false)
.await
@@ -1666,7 +1666,7 @@ pub fn get_downloaded_browser_versions(browser_str: String) -> Result<Vec<String
pub async fn get_browser_release_types(
browser_str: String,
) -> Result<crate::browser_version_service::BrowserReleaseTypes, String> {
let service = BrowserVersionService::new();
let service = BrowserVersionService::instance();
service
.get_browser_release_types(&browser_str)
.await