mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-10-29 10:02:09 +08:00
* feat: update Cargo.toml for 2024 edition and optimize release profiles * feat: refactor environment variable settings for Linux and improve code organization * Refactor conditional statements to use `&&` for improved readability - Updated multiple files to combine nested `if let` statements using `&&` for better clarity and conciseness. - This change enhances the readability of the code by reducing indentation levels and making the conditions more straightforward. - Affected files include: media_unlock_checker.rs, profile.rs, clash.rs, profiles.rs, async_proxy_query.rs, core.rs, handle.rs, hotkey.rs, service.rs, timer.rs, tray/mod.rs, merge.rs, seq.rs, config.rs, proxy.rs, window.rs, general.rs, dirs.rs, i18n.rs, init.rs, network.rs, and window.rs in the resolve module. * refactor: streamline conditional checks using `&&` for improved readability
52 lines
1.4 KiB
Rust
52 lines
1.4 KiB
Rust
use super::CmdResult;
|
|
use crate::{
|
|
core::{CoreManager, service},
|
|
utils::i18n::t,
|
|
};
|
|
use anyhow::Result;
|
|
|
|
async fn execute_service_operation_sync<F, Fut, E>(service_op: F, op_type: &str) -> CmdResult
|
|
where
|
|
F: FnOnce() -> Fut,
|
|
Fut: std::future::Future<Output = Result<(), E>>,
|
|
E: ToString + std::fmt::Debug,
|
|
{
|
|
if let Err(e) = service_op().await {
|
|
let emsg = format!("{} {} failed: {}", op_type, "Service", e.to_string());
|
|
return Err(t(emsg.as_str()).await);
|
|
}
|
|
if CoreManager::global().restart_core().await.is_err() {
|
|
let emsg = format!("{} {} failed", "Restart", "Core");
|
|
return Err(t(emsg.as_str()).await);
|
|
}
|
|
Ok(())
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn install_service() -> CmdResult {
|
|
execute_service_operation_sync(service::install_service, "Install").await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn uninstall_service() -> CmdResult {
|
|
execute_service_operation_sync(service::uninstall_service, "Uninstall").await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn reinstall_service() -> CmdResult {
|
|
execute_service_operation_sync(service::reinstall_service, "Reinstall").await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn repair_service() -> CmdResult {
|
|
execute_service_operation_sync(service::force_reinstall_service, "Repair").await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn is_service_available() -> CmdResult<bool> {
|
|
service::is_service_available()
|
|
.await
|
|
.map(|_| true)
|
|
.map_err(|e| e.to_string())
|
|
}
|