diff --git a/easytier-gui/src-tauri/src/main.rs b/easytier-gui/src-tauri/src/main.rs index 6ce7ce36..867bfe19 100644 --- a/easytier-gui/src-tauri/src/main.rs +++ b/easytier-gui/src-tauri/src/main.rs @@ -235,15 +235,13 @@ static INSTANCE_MAP: once_cell::sync::Lazy> = // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command #[tauri::command] -fn parse_network_config(cfg: &str) -> Result { - let cfg: NetworkConfig = serde_json::from_str(cfg).map_err(|e| e.to_string())?; +fn parse_network_config(cfg: NetworkConfig) -> Result { let toml = cfg.gen_config().map_err(|e| e.to_string())?; Ok(toml.dump()) } #[tauri::command] -fn run_network_instance(cfg: &str) -> Result { - let cfg: NetworkConfig = serde_json::from_str(cfg).map_err(|e| e.to_string())?; +fn run_network_instance(cfg: NetworkConfig) -> Result<(), String> { if INSTANCE_MAP.contains_key(&cfg.instance_id) { return Err("instance already exists".to_string()); } @@ -254,13 +252,11 @@ fn run_network_instance(cfg: &str) -> Result { println!("instance {} started", instance_id); INSTANCE_MAP.insert(instance_id, instance); - Ok("".to_string()) + Ok(()) } #[tauri::command] -fn retain_network_instance(instance_ids: &str) -> Result<(), String> { - let instance_ids: Vec = - serde_json::from_str(instance_ids).map_err(|e| e.to_string())?; +fn retain_network_instance(instance_ids: Vec) -> Result<(), String> { let _ = INSTANCE_MAP.retain(|k, _| instance_ids.contains(k)); println!( "instance {:?} retained", @@ -273,14 +269,14 @@ fn retain_network_instance(instance_ids: &str) -> Result<(), String> { } #[tauri::command] -fn collect_network_infos() -> Result { +fn collect_network_infos() -> Result, String> { let mut ret = BTreeMap::new(); for instance in INSTANCE_MAP.iter() { if let Some(info) = instance.get_running_info() { ret.insert(instance.key().clone(), info); } } - Ok(serde_json::to_string(&ret).map_err(|e| e.to_string())?) + Ok(ret) } #[tauri::command] diff --git a/easytier-gui/src/composables/network.ts b/easytier-gui/src/composables/network.ts index bbb0a016..7dbbd2d9 100644 --- a/easytier-gui/src/composables/network.ts +++ b/easytier-gui/src/composables/network.ts @@ -1,22 +1,22 @@ import { invoke } from '@tauri-apps/api/tauri' import type { NetworkConfig, NetworkInstanceRunningInfo } from '~/types/network' -export async function parseNetworkConfig(cfg: NetworkConfig): Promise { - return invoke('parse_network_config', { cfg: JSON.stringify(cfg) }) +export async function parseNetworkConfig(cfg: NetworkConfig) { + return invoke('parse_network_config', { cfg }) } -export async function runNetworkInstance(cfg: NetworkConfig): Promise { - return invoke('run_network_instance', { cfg: JSON.stringify(cfg) }) +export async function runNetworkInstance(cfg: NetworkConfig) { + return invoke('run_network_instance', { cfg }) } -export async function retainNetworkInstance(instanceIds: string[]): Promise { - return invoke('retain_network_instance', { instanceIds: JSON.stringify(instanceIds) }) +export async function retainNetworkInstance(instanceIds: string[]) { + return invoke('retain_network_instance', { instanceIds }) } -export async function collectNetworkInfos(): Promise> { - return JSON.parse(await invoke('collect_network_infos')) +export async function collectNetworkInfos() { + return await invoke>('collect_network_infos') } -export async function getOsHostname(): Promise { - return await invoke('get_os_hostname') -} \ No newline at end of file +export async function getOsHostname() { + return await invoke('get_os_hostname') +}