From 4840e07da82bdf8e1ecc46a371a7d909924d9522 Mon Sep 17 00:00:00 2001 From: wonfen Date: Sun, 25 May 2025 21:56:04 +0800 Subject: [PATCH] refactor: remove redundant logic --- src-tauri/src/cmd/proxy.rs | 32 +++-------------------------- src-tauri/src/core/handle.rs | 16 --------------- src/pages/_layout.tsx | 17 --------------- src/providers/app-data-provider.tsx | 3 +++ 4 files changed, 6 insertions(+), 62 deletions(-) diff --git a/src-tauri/src/cmd/proxy.rs b/src-tauri/src/cmd/proxy.rs index 94bc2dff5..d0544bbb4 100644 --- a/src-tauri/src/cmd/proxy.rs +++ b/src-tauri/src/cmd/proxy.rs @@ -1,15 +1,13 @@ use super::CmdResult; -use crate::{core::handle, module::mihomo::MihomoManager}; +use crate::module::mihomo::MihomoManager; use once_cell::sync::Lazy; use parking_lot::Mutex; use std::sync::atomic::{AtomicBool, Ordering}; use std::time::{Duration, Instant}; static LAST_REFRESH_TIME: Lazy>> = Lazy::new(|| Mutex::new(None)); -static LAST_EVENT_TIME: Lazy>> = Lazy::new(|| Mutex::new(None)); static IS_REFRESHING: AtomicBool = AtomicBool::new(false); -const REFRESH_INTERVAL: Duration = Duration::from_secs(3); -const EVENT_INTERVAL: Duration = Duration::from_secs(1); +const REFRESH_INTERVAL: Duration = Duration::from_secs(5); #[tauri::command] pub async fn get_proxies() -> CmdResult { @@ -51,31 +49,7 @@ pub async fn get_providers_proxies() -> CmdResult { let manager = MihomoManager::global(); match manager.refresh_providers_proxies().await { Ok(_) => { - log::debug!(target: "app", "providers_proxies后台刷新成功"); - - let should_send_event = { - let mut last_event = LAST_EVENT_TIME.lock(); - match *last_event { - Some(last_time) => { - if last_time.elapsed() > EVENT_INTERVAL { - *last_event = Some(Instant::now()); - true - } else { - false - } - } - None => { - *last_event = Some(Instant::now()); - true - } - } - }; - if should_send_event { - handle::Handle::refresh_providers_proxies(); - log::debug!(target: "app", "已发送providers_proxies刷新事件"); - } else { - log::debug!(target: "app", "跳过providers_proxies事件发送(频率限制)"); - } + log::debug!(target: "app", "providers_proxies静默后台刷新成功"); } Err(e) => { log::warn!(target: "app", "providers_proxies后台刷新失败: {}", e); diff --git a/src-tauri/src/core/handle.rs b/src-tauri/src/core/handle.rs index 5457a070d..0ab9faee8 100644 --- a/src-tauri/src/core/handle.rs +++ b/src-tauri/src/core/handle.rs @@ -17,7 +17,6 @@ use crate::{logging, utils::logging::Type}; enum FrontendEvent { RefreshClash, RefreshVerge, - RefreshProvidersProxies, NoticeMessage { status: String, message: String }, ProfileChanged { current_profile_id: String }, TimerUpdated { profile_index: String }, @@ -122,9 +121,6 @@ impl NotificationSystem { FrontendEvent::RefreshVerge => { ("verge://refresh-verge-config", Ok(serde_json::json!("yes"))) } - FrontendEvent::RefreshProvidersProxies => { - ("verge://refresh-providers-proxies", Ok(serde_json::json!("yes"))) - } FrontendEvent::NoticeMessage { status, message } => { match serde_json::to_value((status, message)) { Ok(p) => ("verge://notice-message", Ok(p)), @@ -313,18 +309,6 @@ impl Handle { } } - pub fn refresh_providers_proxies() { - let handle = Self::global(); - if handle.is_exiting() { - return; - } - - let system_opt = handle.notification_system.read(); - if let Some(system) = system_opt.as_ref() { - system.send_event(FrontendEvent::RefreshProvidersProxies); - } - } - pub fn notify_profile_changed(profile_id: String) { let handle = Self::global(); if handle.is_exiting() { diff --git a/src/pages/_layout.tsx b/src/pages/_layout.tsx index 380877946..377c5bb36 100644 --- a/src/pages/_layout.tsx +++ b/src/pages/_layout.tsx @@ -170,8 +170,6 @@ const Layout = () => { // 设置监听器 useEffect(() => { - let providersDebounceTimer: ReturnType | undefined; - const listeners = [ addListener("verge://refresh-clash-config", async () => { await getAxios(true); @@ -187,17 +185,6 @@ const Layout = () => { mutate("getAutotemProxy"); }), - addListener("verge://refresh-providers-proxies", () => { - if (providersDebounceTimer) { - clearTimeout(providersDebounceTimer); - } - - providersDebounceTimer = setTimeout(() => { - console.log('[Layout] Debounced refresh-providers-proxies event'); - mutate("getProxyProviders"); - providersDebounceTimer = undefined; - }, 500); - }), addListener("verge://notice-message", ({ payload }) => handleNotice(payload as [string, string]), @@ -220,10 +207,6 @@ const Layout = () => { const cleanupWindow = setupWindowListeners(); return () => { - if (providersDebounceTimer) { - clearTimeout(providersDebounceTimer); - } - listeners.forEach((listener) => { if (typeof listener.then === "function") { listener.then((unlisten) => unlisten()); diff --git a/src/providers/app-data-provider.tsx b/src/providers/app-data-provider.tsx index 1b88671f1..76464df67 100644 --- a/src/providers/app-data-provider.tsx +++ b/src/providers/app-data-provider.tsx @@ -71,6 +71,9 @@ export const AppDataProvider = ({ children }: { children: React.ReactNode }) => getProxyProviders, { revalidateOnFocus: false, + revalidateOnReconnect: false, + refreshInterval: 30000, + dedupingInterval: 10000, suspense: false, errorRetryCount: 3 }