* refactor: clash-verge-service management * fix: correct service state checks in ProxyControlSwitches component refactor: improve logging in service state update functions * fix: add missing async handler for Windows and adjust logging import for macOS * fix: streamline logging imports and add missing async handler for Windows * refactor: remove unused useServiceStateSync hook and update imports in _layout * refactor: remove unused useServiceStateSync import and clean up code in ProxyControlSwitches and _layout * refactor: simplify service status checks and reduce wait time in useServiceInstaller hook * refactor: remove unnecessary logging statements in service checks and IPC connection * refactor: extract SwitchRow component for better code organization and readability * refactor: enhance service state management and update related mutations in layout * refactor: streamline core stopping logic and improve IPC connection logging * refactor: consolidate service uninstallation logic and improve error handling * fix: simplify conditional statements in CoreManager and service functions * feat: add backoff dependency and implement retry strategy for IPC requests * refactor: remove redundant Windows conditional and improve error handling in IPC tests * test: improve error handling in IPC tests for message signing and verification * fix: adjust IPC backoff retry parameters * refactor: Remove service state tracking and related logic from service management * feat: Enhance service status handling with logging and running mode updates * fix: Improve service status handling with enhanced error logging * fix: Ensure proper handling of service operations with error propagation * refactor: Simplify service operation execution and enhance service status handling * fix: Improve error message formatting in service operation execution and simplify service status retrieval * refactor: Replace Cache with CacheProxy in multiple modules and update CacheEntry to be generic * fix: Remove unnecessary success message from config validation * refactor: Comment out logging statements in service version check and IPC request handling
54 lines
1.4 KiB
Rust
54 lines
1.4 KiB
Rust
use super::CmdResult;
|
|
use crate::{
|
|
core::{
|
|
CoreManager,
|
|
service::{self, SERVICE_MANAGER, ServiceStatus},
|
|
},
|
|
utils::i18n::t,
|
|
};
|
|
|
|
async fn execute_service_operation_sync(status: ServiceStatus, op_type: &str) -> CmdResult {
|
|
if let Err(e) = SERVICE_MANAGER
|
|
.lock()
|
|
.await
|
|
.handle_service_status(&status)
|
|
.await
|
|
{
|
|
let emsg = format!("{} Service failed: {}", op_type, e);
|
|
return Err(t(emsg.as_str()).await);
|
|
}
|
|
if CoreManager::global().restart_core().await.is_err() {
|
|
let emsg = "Restart Core failed";
|
|
return Err(t(emsg).await);
|
|
}
|
|
Ok(())
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn install_service() -> CmdResult {
|
|
execute_service_operation_sync(ServiceStatus::InstallRequired, "Install").await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn uninstall_service() -> CmdResult {
|
|
execute_service_operation_sync(ServiceStatus::UninstallRequired, "Uninstall").await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn reinstall_service() -> CmdResult {
|
|
execute_service_operation_sync(ServiceStatus::ReinstallRequired, "Reinstall").await
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn repair_service() -> CmdResult {
|
|
execute_service_operation_sync(ServiceStatus::ForceReinstallRequired, "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())
|
|
}
|