mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-10-14 21:20:48 +08:00
perf(tray): avoid cloning runtime config
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user