From 76bf91ff8acc5e4be1bc9c4c9da4915dc4cdc346 Mon Sep 17 00:00:00 2001 From: oomeow Date: Fri, 7 Nov 2025 22:46:30 +0800 Subject: [PATCH] fix: import profile panic (#5346) * fix: import profile panic docs: update UPDATELOG.md chore: update * perf: spawn import profile --- UPDATELOG.md | 1 + src-tauri/src/config/prfitem.rs | 40 +++++---------------------------- src-tauri/src/utils/server.rs | 8 +++---- 3 files changed, 10 insertions(+), 39 deletions(-) diff --git a/UPDATELOG.md b/UPDATELOG.md index c393f5e09..aff9b85b6 100644 --- a/UPDATELOG.md +++ b/UPDATELOG.md @@ -37,6 +37,7 @@ - 修复 Linux 系统主题切换不生效 - 修复 `允许自动更新` 字段使手动订阅刷新失效 - 修复轻量模式托盘状态不同步 +- 修复一键导入订阅导致应用卡死崩溃的问题
✨ 新增功能 diff --git a/src-tauri/src/config/prfitem.rs b/src-tauri/src/config/prfitem.rs index 38a4fd754..e817d7108 100644 --- a/src-tauri/src/config/prfitem.rs +++ b/src-tauri/src/config/prfitem.rs @@ -456,16 +456,10 @@ impl PrfItem { Ok(Self { uid: Some(id), itype: Some("merge".into()), - name: None, - desc: None, file: Some(file), - url: None, - selected: None, - extra: None, - option: None, - home: None, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(template), + ..Default::default() }) } @@ -481,16 +475,10 @@ impl PrfItem { Ok(Self { uid: Some(id), itype: Some("script".into()), - name: None, - desc: None, file: Some(file), - url: None, - home: None, - selected: None, - extra: None, - option: None, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(tmpl::ITEM_SCRIPT.into()), + ..Default::default() }) } @@ -502,16 +490,10 @@ impl PrfItem { Ok(Self { uid: Some(uid), itype: Some("rules".into()), - name: None, - desc: None, file: Some(file), - url: None, - home: None, - selected: None, - extra: None, - option: None, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(tmpl::ITEM_RULES.into()), + ..Default::default() }) } @@ -523,16 +505,10 @@ impl PrfItem { Ok(Self { uid: Some(uid), itype: Some("proxies".into()), - name: None, - desc: None, file: Some(file), - url: None, - home: None, - selected: None, - extra: None, - option: None, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(tmpl::ITEM_PROXIES.into()), + ..Default::default() }) } @@ -544,16 +520,10 @@ impl PrfItem { Ok(Self { uid: Some(uid), itype: Some("groups".into()), - name: None, - desc: None, file: Some(file), - url: None, - home: None, - selected: None, - extra: None, - option: None, updated: Some(chrono::Local::now().timestamp() as usize), file_data: Some(tmpl::ITEM_GROUPS.into()), + ..Default::default() }) } diff --git a/src-tauri/src/utils/server.rs b/src-tauri/src/utils/server.rs index a704d81fd..9e8e12296 100644 --- a/src-tauri/src/utils/server.rs +++ b/src-tauri/src/utils/server.rs @@ -112,14 +112,14 @@ pub fn embed_server() { // Use map instead of and_then to avoid Send issues let scheme = warp::path!("commands" / "scheme") .and(warp::query::()) - .map(|query: QueryParam| { - tokio::task::spawn_local(async move { + .and_then(|query: QueryParam| async move { + AsyncHandler::spawn(|| async move { logging_error!(Type::Setup, resolve::resolve_scheme(&query.param).await); }); - warp::reply::with_status::( + Ok::<_, warp::Rejection>(warp::reply::with_status::( "ok".to_string(), warp::http::StatusCode::OK, - ) + )) }); let commands = visible.or(scheme).or(pac);