perf(tray): avoid cloning runtime config

This commit is contained in:
Tunglies
2026-08-10 22:13:33 +08:00
parent a1c27f5e8b
commit c11791137f
+17 -33
View File
@@ -614,45 +614,29 @@ async fn create_tray_menu(
.await .await
.map_or(None, |res| res.ok()); .map_or(None, |res| res.ok());
let runtime_proxy_groups_order = cmd::get_runtime_config() let runtime = Config::runtime().await.latest_arc();
.await let runtime_proxy_groups_order = runtime.config.as_ref().map(|config| {
.map_err(|e| { config
logging!( .get("proxy-groups")
error, .and_then(|groups| groups.as_sequence())
Type::Cmd, .map(|groups| {
"Failed to fetch runtime proxy groups for tray menu: {e}" groups
); .iter()
}) .filter_map(|group| group.get("name"))
.ok() .filter_map(|name| name.as_str())
.flatten() .enumerate()
.map(|config| { .map(|(index, name)| (name.into(), index))
config .collect::<HashMap<String, usize>>()
.get("proxy-groups") })
.and_then(|groups| groups.as_sequence()) .unwrap_or_default()
.map(|groups| { });
groups
.iter()
.filter_map(|group| group.get("name"))
.filter_map(|name| name.as_str())
.map(|name| name.into())
.collect::<Vec<String>>()
})
.unwrap_or_default()
});
(proxy_nodes_data, runtime_proxy_groups_order) (proxy_nodes_data, runtime_proxy_groups_order)
} else { } else {
(None, None) (None, None)
}; };
let proxy_group_order_map: Option<HashMap<smartstring::SmartString<smartstring::LazyCompact>, usize>> = let proxy_group_order_map = runtime_proxy_groups_order;
runtime_proxy_groups_order.as_ref().map(|group_names| {
group_names
.iter()
.enumerate()
.map(|(index, name)| (name.clone(), index))
.collect::<HashMap<String, usize>>()
});
let verge_settings = Config::verge().await.latest_arc(); let verge_settings = Config::verge().await.latest_arc();
let tray_proxy_groups_display_mode = verge_settings let tray_proxy_groups_display_mode = verge_settings