mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-11-08 02:52:07 +08:00
refactor: fix startup init chain — resolve_done semantics, dedupe events, cleanup
Backend: - Move resolve_done() from sync setup() to async task after futures::join! so Timer waits for actual init completion instead of firing immediately - Replace std::thread::sleep(50ms) with tokio::time::sleep in async context - Remove duplicate refresh_tray_menu in tray_init (keep post-join call only) - Delete dead code reset_resolve_done (process restarts, static is destroyed) - Rename create_window(is_show) → create_window(should_create) for clarity Frontend: - Remove duplicate verge://refresh-clash-config listener from AppDataProvider (useLayoutEvents handles it via invalidateQueries — single consumer path) - Stabilize useEffect deps with useRef for TQ refetch references - Simplify AppDataProvider event listener setup (profile-changed + proxy only)
This commit is contained in:
@@ -62,14 +62,9 @@ pub fn resolve_setup_async() {
|
||||
init_system_proxy_guard().await;
|
||||
});
|
||||
|
||||
let tray_init = async {
|
||||
init_tray().await;
|
||||
refresh_tray_menu().await;
|
||||
};
|
||||
|
||||
let _ = futures::join!(
|
||||
core_init,
|
||||
tray_init,
|
||||
init_tray(),
|
||||
init_timer(),
|
||||
init_hotkey(),
|
||||
init_auto_lightweight_boot(),
|
||||
@@ -79,6 +74,7 @@ pub fn resolve_setup_async() {
|
||||
|
||||
Handle::refresh_clash();
|
||||
refresh_tray_menu().await;
|
||||
resolve_done();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -220,7 +216,3 @@ pub fn resolve_done() {
|
||||
pub fn is_resolve_done() -> bool {
|
||||
RESOLVE_DONE.load(Ordering::Acquire)
|
||||
}
|
||||
|
||||
pub fn reset_resolve_done() {
|
||||
RESOLVE_DONE.store(false, Ordering::Release);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user