feat: add function to retrieve profile name by UID and improve error logging for profile updates
This commit is contained in:
@@ -435,8 +435,8 @@ impl IProfiles {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// 判断profile是否是current指向的
|
/// 判断profile是否是current指向的
|
||||||
pub fn is_current_profile_index(&self, index: String) -> bool {
|
pub fn is_current_profile_index(&self, index: &String) -> bool {
|
||||||
self.current == Some(index)
|
self.current.as_ref() == Some(index)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 获取所有的profiles(uid,名称)
|
/// 获取所有的profiles(uid,名称)
|
||||||
@@ -455,6 +455,18 @@ impl IProfiles {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 通过 uid 获取名称
|
||||||
|
pub fn get_name_by_uid(&self, uid: &String) -> Option<String> {
|
||||||
|
if let Some(items) = &self.items {
|
||||||
|
for item in items {
|
||||||
|
if item.uid.as_ref() == Some(uid) {
|
||||||
|
return item.name.clone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
/// 以 app 中的 profile 列表为准,删除不再需要的文件
|
/// 以 app 中的 profile 列表为准,删除不再需要的文件
|
||||||
pub async fn cleanup_orphaned_files(&self) -> Result<CleanupResult> {
|
pub async fn cleanup_orphaned_files(&self) -> Result<CleanupResult> {
|
||||||
let profiles_dir = dirs::app_profiles_dir()?;
|
let profiles_dir = dirs::app_profiles_dir()?;
|
||||||
|
|||||||
@@ -673,17 +673,15 @@ async fn create_profile_menu_item(
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|(profile_uid, profile_name)| {
|
.map(|(profile_uid, profile_name)| {
|
||||||
let app_handle = app_handle.clone();
|
let app_handle = app_handle.clone();
|
||||||
let profile_uid = profile_uid.clone();
|
|
||||||
let profile_name = profile_name.clone();
|
|
||||||
async move {
|
async move {
|
||||||
let is_current_profile = Config::profiles()
|
let is_current_profile = Config::profiles()
|
||||||
.await
|
.await
|
||||||
.latest_ref()
|
.latest_ref()
|
||||||
.is_current_profile_index(profile_uid.clone());
|
.is_current_profile_index(profile_uid);
|
||||||
CheckMenuItem::with_id(
|
CheckMenuItem::with_id(
|
||||||
&app_handle,
|
&app_handle,
|
||||||
format!("profiles_{profile_uid}"),
|
format!("profiles_{profile_uid}"),
|
||||||
t(&profile_name).await,
|
t(profile_name).await,
|
||||||
true,
|
true,
|
||||||
is_current_profile,
|
is_current_profile,
|
||||||
None::<&str>,
|
None::<&str>,
|
||||||
|
|||||||
@@ -140,14 +140,19 @@ async fn perform_profile_update(
|
|||||||
Ok(is_current)
|
Ok(is_current)
|
||||||
}
|
}
|
||||||
Err(retry_err) => {
|
Err(retry_err) => {
|
||||||
|
let failed_profile_name = Config::profiles()
|
||||||
|
.await
|
||||||
|
.latest_ref()
|
||||||
|
.get_name_by_uid(uid)
|
||||||
|
.unwrap_or_default();
|
||||||
logging!(
|
logging!(
|
||||||
error,
|
error,
|
||||||
Type::Config,
|
Type::Config,
|
||||||
"[订阅更新] 使用Clash代理更新仍然失败: {retry_err}"
|
"[订阅更新] 使用Clash代理更新仍然失败: {failed_profile_name} - {retry_err}"
|
||||||
);
|
);
|
||||||
handle::Handle::notice_message(
|
handle::Handle::notice_message(
|
||||||
"update_failed_even_with_clash",
|
"update_failed_even_with_clash",
|
||||||
format!("{retry_err}"),
|
format!("{failed_profile_name} - {retry_err}"),
|
||||||
);
|
);
|
||||||
Err(retry_err)
|
Err(retry_err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user