refactor: remove redundant logic

This commit is contained in:
wonfen
2025-05-25 21:56:04 +08:00
parent af1689ee07
commit 4840e07da8
4 changed files with 6 additions and 62 deletions

View File

@@ -1,15 +1,13 @@
use super::CmdResult; use super::CmdResult;
use crate::{core::handle, module::mihomo::MihomoManager}; use crate::module::mihomo::MihomoManager;
use once_cell::sync::Lazy; use once_cell::sync::Lazy;
use parking_lot::Mutex; use parking_lot::Mutex;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
static LAST_REFRESH_TIME: Lazy<Mutex<Option<Instant>>> = Lazy::new(|| Mutex::new(None)); static LAST_REFRESH_TIME: Lazy<Mutex<Option<Instant>>> = Lazy::new(|| Mutex::new(None));
static LAST_EVENT_TIME: Lazy<Mutex<Option<Instant>>> = Lazy::new(|| Mutex::new(None));
static IS_REFRESHING: AtomicBool = AtomicBool::new(false); static IS_REFRESHING: AtomicBool = AtomicBool::new(false);
const REFRESH_INTERVAL: Duration = Duration::from_secs(3); const REFRESH_INTERVAL: Duration = Duration::from_secs(5);
const EVENT_INTERVAL: Duration = Duration::from_secs(1);
#[tauri::command] #[tauri::command]
pub async fn get_proxies() -> CmdResult<serde_json::Value> { pub async fn get_proxies() -> CmdResult<serde_json::Value> {
@@ -51,31 +49,7 @@ pub async fn get_providers_proxies() -> CmdResult<serde_json::Value> {
let manager = MihomoManager::global(); let manager = MihomoManager::global();
match manager.refresh_providers_proxies().await { match manager.refresh_providers_proxies().await {
Ok(_) => { Ok(_) => {
log::debug!(target: "app", "providers_proxies后台刷新成功"); 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事件发送频率限制");
}
} }
Err(e) => { Err(e) => {
log::warn!(target: "app", "providers_proxies后台刷新失败: {}", e); log::warn!(target: "app", "providers_proxies后台刷新失败: {}", e);

View File

@@ -17,7 +17,6 @@ use crate::{logging, utils::logging::Type};
enum FrontendEvent { enum FrontendEvent {
RefreshClash, RefreshClash,
RefreshVerge, RefreshVerge,
RefreshProvidersProxies,
NoticeMessage { status: String, message: String }, NoticeMessage { status: String, message: String },
ProfileChanged { current_profile_id: String }, ProfileChanged { current_profile_id: String },
TimerUpdated { profile_index: String }, TimerUpdated { profile_index: String },
@@ -122,9 +121,6 @@ impl NotificationSystem {
FrontendEvent::RefreshVerge => { FrontendEvent::RefreshVerge => {
("verge://refresh-verge-config", Ok(serde_json::json!("yes"))) ("verge://refresh-verge-config", Ok(serde_json::json!("yes")))
} }
FrontendEvent::RefreshProvidersProxies => {
("verge://refresh-providers-proxies", Ok(serde_json::json!("yes")))
}
FrontendEvent::NoticeMessage { status, message } => { FrontendEvent::NoticeMessage { status, message } => {
match serde_json::to_value((status, message)) { match serde_json::to_value((status, message)) {
Ok(p) => ("verge://notice-message", Ok(p)), 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) { pub fn notify_profile_changed(profile_id: String) {
let handle = Self::global(); let handle = Self::global();
if handle.is_exiting() { if handle.is_exiting() {

View File

@@ -170,8 +170,6 @@ const Layout = () => {
// 设置监听器 // 设置监听器
useEffect(() => { useEffect(() => {
let providersDebounceTimer: ReturnType<typeof setTimeout> | undefined;
const listeners = [ const listeners = [
addListener("verge://refresh-clash-config", async () => { addListener("verge://refresh-clash-config", async () => {
await getAxios(true); await getAxios(true);
@@ -187,17 +185,6 @@ const Layout = () => {
mutate("getAutotemProxy"); 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 }) => addListener("verge://notice-message", ({ payload }) =>
handleNotice(payload as [string, string]), handleNotice(payload as [string, string]),
@@ -220,10 +207,6 @@ const Layout = () => {
const cleanupWindow = setupWindowListeners(); const cleanupWindow = setupWindowListeners();
return () => { return () => {
if (providersDebounceTimer) {
clearTimeout(providersDebounceTimer);
}
listeners.forEach((listener) => { listeners.forEach((listener) => {
if (typeof listener.then === "function") { if (typeof listener.then === "function") {
listener.then((unlisten) => unlisten()); listener.then((unlisten) => unlisten());

View File

@@ -71,6 +71,9 @@ export const AppDataProvider = ({ children }: { children: React.ReactNode }) =>
getProxyProviders, getProxyProviders,
{ {
revalidateOnFocus: false, revalidateOnFocus: false,
revalidateOnReconnect: false,
refreshInterval: 30000,
dedupingInterval: 10000,
suspense: false, suspense: false,
errorRetryCount: 3 errorRetryCount: 3
} }