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);