diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index c0c0ff27..ab6f6484 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -17,10 +17,7 @@ use crate::{ core::handle, core::hotkey, process::AsyncHandler, - utils::{ - resolve::{self, scheme::resolve_scheme}, - server, - }, + utils::{resolve, server}, }; use config::Config; use parking_lot::Mutex; @@ -100,7 +97,7 @@ mod app_init { let url = event.urls().first().map(|u| u.to_string()); if let Some(url) = url { tokio::task::spawn_local(async move { - if let Err(e) = resolve_scheme(url).await { + if let Err(e) = resolve::resolve_scheme(url).await { logging!(error, Type::Setup, true, "Failed to resolve scheme: {}", e); } }); diff --git a/src-tauri/src/utils/resolve/mod.rs b/src-tauri/src/utils/resolve/mod.rs index 0eb64a10..a837d504 100644 --- a/src-tauri/src/utils/resolve/mod.rs +++ b/src-tauri/src/utils/resolve/mod.rs @@ -1,3 +1,4 @@ +use anyhow::Result; use tauri::AppHandle; use crate::{ @@ -32,9 +33,10 @@ pub fn resolve_setup_async() { std::thread::current().id() ); + AsyncHandler::spawn_blocking(|| AsyncHandler::block_on(init_work_config())); + AsyncHandler::spawn(|| async { init_resources().await; - init_work_config().await; init_startup_script().await; init_timer().await; @@ -45,7 +47,6 @@ pub fn resolve_setup_async() { init_core_manager().await; init_system_proxy().await; - // 在单独的 spawn 中运行 sync 函数,避免 Send 问题 AsyncHandler::spawn_blocking(|| { init_system_proxy_guard(); }); @@ -106,6 +107,18 @@ pub(super) fn init_scheme() { logging_error!(Type::Setup, true, init::init_scheme()); } +pub async fn resolve_scheme(param: String) -> Result<()> { + logging!( + info, + Type::Setup, + true, + "Resolving scheme for param: {}", + param + ); + logging_error!(Type::Setup, true, scheme::resolve_scheme(param).await); + Ok(()) +} + pub(super) fn init_embed_server() { logging!(info, Type::Setup, true, "Initializing embedded server..."); server::embed_server(); diff --git a/src-tauri/src/utils/resolve/scheme.rs b/src-tauri/src/utils/resolve/scheme.rs index 513c927b..73233cf5 100644 --- a/src-tauri/src/utils/resolve/scheme.rs +++ b/src-tauri/src/utils/resolve/scheme.rs @@ -4,7 +4,7 @@ use tauri::Url; use crate::{config::PrfItem, core::handle, logging, utils::logging::Type, wrap_err}; -pub async fn resolve_scheme(param: String) -> Result<()> { +pub(super) async fn resolve_scheme(param: String) -> Result<()> { log::info!(target:"app", "received deep link: {param}"); let param_str = if param.starts_with("[") && param.len() > 4 { diff --git a/src-tauri/src/utils/server.rs b/src-tauri/src/utils/server.rs index 50739958..5b144348 100644 --- a/src-tauri/src/utils/server.rs +++ b/src-tauri/src/utils/server.rs @@ -84,11 +84,7 @@ pub fn embed_server() { // Spawn async work in a fire-and-forget manner let param = query.param.clone(); tokio::task::spawn_local(async move { - logging_error!( - Type::Setup, - true, - resolve::scheme::resolve_scheme(param).await - ); + logging_error!(Type::Setup, true, resolve::resolve_scheme(param).await); }); warp::reply::with_status("ok".to_string(), warp::http::StatusCode::OK) });