feat: enhance profile update handling with manual trigger

This commit is contained in:
Tunglies 2026-02-20 11:12:18 +08:00
parent 7528c238c4
commit e5dd127bcc
No known key found for this signature in database
GPG Key ID: B9B01B389469B3E8
4 changed files with 12 additions and 4 deletions

View File

@ -10,4 +10,6 @@
<details> <details>
<summary><strong> 🚀 优化改进 </strong></summary> <summary><strong> 🚀 优化改进 </strong></summary>
- 优化订阅错误通知,仅在手动触发时
</details> </details>

View File

@ -158,7 +158,7 @@ pub async fn create_profile(item: PrfItem, file_data: Option<String>) -> CmdResu
/// 更新配置文件 /// 更新配置文件
#[tauri::command] #[tauri::command]
pub async fn update_profile(index: String, option: Option<PrfOption>) -> CmdResult { pub async fn update_profile(index: String, option: Option<PrfOption>) -> CmdResult {
match feat::update_profile(&index, option.as_ref(), true, true).await { match feat::update_profile(&index, option.as_ref(), true, true, true).await {
Ok(_) => { Ok(_) => {
let _: () = Config::profiles().await.apply(); let _: () = Config::profiles().await.apply();
Ok(()) Ok(())

View File

@ -430,7 +430,7 @@ impl Timer {
let is_current = Config::profiles().await.latest_arc().current.as_ref() == Some(uid); let is_current = Config::profiles().await.latest_arc().current.as_ref() == Some(uid);
logging!(info, Type::Timer, "配置 {} 是否为当前激活配置: {}", uid, is_current); logging!(info, Type::Timer, "配置 {} 是否为当前激活配置: {}", uid, is_current);
feat::update_profile(uid, None, is_current, false).await feat::update_profile(uid, None, is_current, false, false).await
}) })
.await .await
{ {

View File

@ -99,6 +99,7 @@ async fn perform_profile_update(
url: &String, url: &String,
opt: Option<&PrfOption>, opt: Option<&PrfOption>,
option: Option<&PrfOption>, option: Option<&PrfOption>,
is_mannual_trigger: bool,
) -> Result<bool> { ) -> Result<bool> {
logging!(info, Type::Config, "[订阅更新] 开始下载新的订阅内容"); logging!(info, Type::Config, "[订阅更新] 开始下载新的订阅内容");
let mut merged_opt = PrfOption::merge(opt, option); let mut merged_opt = PrfOption::merge(opt, option);
@ -173,7 +174,9 @@ async fn perform_profile_update(
} }
} }
if is_mannual_trigger {
handle::Handle::notice_message("update_failed_even_with_clash", format!("{profile_name} - {last_err}")); handle::Handle::notice_message("update_failed_even_with_clash", format!("{profile_name} - {last_err}"));
}
Ok(is_current) Ok(is_current)
} }
@ -182,12 +185,15 @@ pub async fn update_profile(
option: Option<&PrfOption>, option: Option<&PrfOption>,
auto_refresh: bool, auto_refresh: bool,
ignore_auto_update: bool, ignore_auto_update: bool,
is_mannual_trigger: bool,
) -> Result<()> { ) -> Result<()> {
logging!(info, Type::Config, "[订阅更新] 开始更新订阅 {}", uid); logging!(info, Type::Config, "[订阅更新] 开始更新订阅 {}", uid);
let url_opt = should_update_profile(uid, ignore_auto_update).await?; let url_opt = should_update_profile(uid, ignore_auto_update).await?;
let should_refresh = match url_opt { let should_refresh = match url_opt {
Some((url, opt)) => perform_profile_update(uid, &url, opt.as_ref(), option).await? && auto_refresh, Some((url, opt)) => {
perform_profile_update(uid, &url, opt.as_ref(), option, is_mannual_trigger).await? && auto_refresh
}
None => auto_refresh, None => auto_refresh,
}; };