From e5dd127bccc851b53ee0a1f970b47b426db95da3 Mon Sep 17 00:00:00 2001
From: Tunglies <77394545+Tunglies@users.noreply.github.com>
Date: Fri, 20 Feb 2026 11:12:18 +0800
Subject: [PATCH] feat: enhance profile update handling with manual trigger
---
Changelog.md | 2 ++
src-tauri/src/cmd/profile.rs | 2 +-
src-tauri/src/core/timer.rs | 2 +-
src-tauri/src/feat/profile.rs | 10 ++++++++--
4 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/Changelog.md b/Changelog.md
index 09fd524ec..9960e0f39 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -10,4 +10,6 @@
🚀 优化改进
+- 优化订阅错误通知,仅在手动触发时
+
diff --git a/src-tauri/src/cmd/profile.rs b/src-tauri/src/cmd/profile.rs
index 9388e3b7b..44d6a37ae 100644
--- a/src-tauri/src/cmd/profile.rs
+++ b/src-tauri/src/cmd/profile.rs
@@ -158,7 +158,7 @@ pub async fn create_profile(item: PrfItem, file_data: Option) -> CmdResu
/// 更新配置文件
#[tauri::command]
pub async fn update_profile(index: String, option: Option) -> 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(_) => {
let _: () = Config::profiles().await.apply();
Ok(())
diff --git a/src-tauri/src/core/timer.rs b/src-tauri/src/core/timer.rs
index 5a00b36a9..38afb096e 100644
--- a/src-tauri/src/core/timer.rs
+++ b/src-tauri/src/core/timer.rs
@@ -430,7 +430,7 @@ impl Timer {
let is_current = Config::profiles().await.latest_arc().current.as_ref() == Some(uid);
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
{
diff --git a/src-tauri/src/feat/profile.rs b/src-tauri/src/feat/profile.rs
index 00891d154..e8e974afe 100644
--- a/src-tauri/src/feat/profile.rs
+++ b/src-tauri/src/feat/profile.rs
@@ -99,6 +99,7 @@ async fn perform_profile_update(
url: &String,
opt: Option<&PrfOption>,
option: Option<&PrfOption>,
+ is_mannual_trigger: bool,
) -> Result {
logging!(info, Type::Config, "[订阅更新] 开始下载新的订阅内容");
let mut merged_opt = PrfOption::merge(opt, option);
@@ -173,7 +174,9 @@ async fn perform_profile_update(
}
}
- handle::Handle::notice_message("update_failed_even_with_clash", format!("{profile_name} - {last_err}"));
+ if is_mannual_trigger {
+ handle::Handle::notice_message("update_failed_even_with_clash", format!("{profile_name} - {last_err}"));
+ }
Ok(is_current)
}
@@ -182,12 +185,15 @@ pub async fn update_profile(
option: Option<&PrfOption>,
auto_refresh: bool,
ignore_auto_update: bool,
+ is_mannual_trigger: bool,
) -> Result<()> {
logging!(info, Type::Config, "[订阅更新] 开始更新订阅 {}", uid);
let url_opt = should_update_profile(uid, ignore_auto_update).await?;
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,
};