refactor: api cleanup (#7812)

* refactor(config): unify YAML persistence

* refactor(config): remove redundant config APIs

* refactor(config): remove unused config APIs

* refactor(config): narrow profile APIs

* fix(config): preserve profiles on invalid reorder

* refactor(startup): narrow resolve helpers

* refactor(config): unify mixed port defaults

* refactor(network): simplify response APIs

* refactor(config): make profile builders infallible

* refactor(config): make profile activation infallible

* refactor(api): simplify internal runtime APIs

* refactor: consolidate internal config and window APIs
This commit is contained in:
Tunglies
2026-08-25 07:19:17 +00:00
committed by GitHub
parent 272c09568c
commit b7c4f7d39b
29 changed files with 277 additions and 413 deletions
+5 -15
View File
@@ -203,27 +203,17 @@ pub async fn apply_dns_config(apply: bool) -> CmdResult {
}
#[tauri::command]
pub fn check_dns_config_exists() -> CmdResult<bool> {
use crate::utils::dirs;
let dns_path = dirs::app_home_dir().stringify_err()?.join(constants::files::DNS_CONFIG);
Ok(dns_path.exists())
}
#[tauri::command]
pub async fn get_dns_config_content() -> CmdResult<String> {
pub async fn get_dns_config_content() -> CmdResult<Option<String>> {
use crate::utils::dirs;
use tokio::fs;
let dns_path = dirs::app_home_dir().stringify_err()?.join(constants::files::DNS_CONFIG);
if !fs::try_exists(&dns_path).await.stringify_err()? {
return Err("DNS config file not found".into());
match fs::read_to_string(&dns_path).await {
Ok(content) => Ok(Some(content.into())),
Err(error) if error.kind() == std::io::ErrorKind::NotFound => Ok(None),
Err(error) => Err(CommandFailure::plain(error)),
}
let content = fs::read_to_string(&dns_path).await.stringify_err()?.into();
Ok(content)
}
#[tauri::command]
+2 -2
View File
@@ -177,7 +177,7 @@ pub async fn delete_profile(index: String) -> CmdResult {
}
};
if should_update {
logging_error!(Type::Config, profiles::activate_selected_nodes());
profiles::activate_selected_nodes();
}
drop(config_update_guard);
drop(profile_write_guard);
@@ -241,7 +241,7 @@ async fn handle_success(current_value: Option<&String>) -> CmdResult<ValidationO
.await
.stringify_err()?;
// Runtime refresh and tray rebuilding happen after saved node selections are restored.
profiles::activate_selected_nodes().stringify_err()?;
profiles::activate_selected_nodes();
if let Err(e) = profiles_save_file_safe().await {
logging!(warn, Type::Cmd, "Warning: 异步保存配置文件失败: {e}");
+1 -1
View File
@@ -107,7 +107,7 @@ async fn restore_original(
}
fn profile_affects_runtime(profiles: &IProfiles, index: &str) -> bool {
let Some(current_uid) = profiles.get_current() else {
let Some(current_uid) = profiles.current.as_ref() else {
return false;
};
if current_uid == index {