diff --git a/src-tauri/src/utils/clash.rs b/src-tauri/src/utils/clash.rs index cc3148e..7a1e880 100644 --- a/src-tauri/src/utils/clash.rs +++ b/src-tauri/src/utils/clash.rs @@ -17,45 +17,39 @@ use tauri::{ /// Run the clash bin pub fn run_clash_bin(app_handle: &AppHandle) -> ClashInfoPayload { let app_dir = app_home_dir(); + let app_dir = app_dir.as_os_str().to_str().unwrap(); + let mut payload = ClashInfoPayload { status: "success".to_string(), controller: None, message: None, }; - match Command::new_sidecar("clash") { - Ok(cmd) => match cmd - .args(["-d", &app_dir.as_os_str().to_str().unwrap()]) - .spawn() - { - Ok((mut rx, _)) => { - log::info!("Successfully execute clash sidecar"); - payload.controller = Some(read_clash_controller()); - - tauri::async_runtime::spawn(async move { - while let Some(event) = rx.recv().await { - match event { - CommandEvent::Stdout(line) => log::info!("{}", line), - CommandEvent::Stderr(err) => log::error!("{}", err), - _ => {} - } - } - }); - } - Err(err) => { - log::error!( - "Failed to execute clash sidecar for \"{:?}\"", - err.to_string() - ); - payload.status = "error".to_string(); - payload.message = Some(err.to_string()); - } + let result = match Command::new_sidecar("clash") { + Ok(cmd) => match cmd.args(["-d", app_dir]).spawn() { + Ok(res) => Ok(res), + Err(err) => Err(err.to_string()), }, + Err(err) => Err(err.to_string()), + }; + + match result { + Ok((mut rx, _)) => { + log::info!("Successfully execute clash sidecar"); + payload.controller = Some(read_clash_controller()); + + tauri::async_runtime::spawn(async move { + while let Some(event) = rx.recv().await { + match event { + CommandEvent::Stdout(line) => log::info!("{}", line), + CommandEvent::Stderr(err) => log::error!("{}", err), + _ => {} + } + } + }); + } Err(err) => { - log::error!( - "Failed to execute clash sidecar for \"{:?}\"", - err.to_string() - ); + log::error!("Failed to execute clash sidecar for \"{}\"", err); payload.status = "error".to_string(); payload.message = Some(err.to_string()); } @@ -119,9 +113,6 @@ pub async fn put_clash_profile(payload: &ClashInfoPayload) -> Result<(), String> let client = reqwest::Client::new(); match client.put(server).headers(headers).json(&data).send().await { Ok(_) => Ok(()), - Err(err) => Err(format!( - "request failed with status `{}`", - err.status().unwrap() - )), + Err(err) => Err(format!("request failed with status `{}`", err.to_string())), } }