diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs index 747b9b9cb..f644c94a2 100644 --- a/src-tauri/src/core/tray/mod.rs +++ b/src-tauri/src/core/tray/mod.rs @@ -607,8 +607,12 @@ async fn create_tray_menu( ) -> Result> { let current_proxy_mode = mode.unwrap_or(""); + let mut verge_settings = Config::verge().await.latest_arc(); + let fetch_proxy_groups = + options.include_proxy_groups && verge_settings.tray_proxy_groups_display_mode.as_deref() != Some("disable"); + // TODO: should update tray menu again when it was timeout error - let (proxy_nodes_data, runtime_proxy_groups_order) = if options.include_proxy_groups { + let (proxy_nodes_data, runtime_proxy_groups_order) = if fetch_proxy_groups { let proxy_nodes_data = tokio::time::timeout(Duration::from_millis(1000), handle::Handle::mihomo().get_proxies()) .await @@ -636,13 +640,18 @@ async fn create_tray_menu( (None, None) }; - let proxy_group_order_map = runtime_proxy_groups_order; + if fetch_proxy_groups { + verge_settings = Config::verge().await.latest_arc(); + } - let verge_settings = Config::verge().await.latest_arc(); let tray_proxy_groups_display_mode = verge_settings .tray_proxy_groups_display_mode .as_deref() .unwrap_or("default"); + let include_proxy_groups = options.include_proxy_groups && tray_proxy_groups_display_mode != "disable"; + + let proxy_group_order_map = runtime_proxy_groups_order; + let show_outbound_modes_inline = verge_settings.tray_inline_outbound_modes.unwrap_or(false); let version = env!("CARGO_PKG_VERSION"); @@ -724,7 +733,7 @@ async fn create_tray_menu( &profile_menu_items_refs, )?; - let (proxies_menu, inline_proxy_items) = if options.include_proxy_groups { + let (proxies_menu, inline_proxy_items) = if include_proxy_groups { let proxy_sub_menus = create_subcreate_proxy_menu_item(app_handle, current_proxy_mode, proxy_group_order_map, proxy_nodes_data);