use launcher_core::game::client::{ClientType, Instance, Manifest}; use tauri::State; use tokio::sync::Mutex; use uuid::Uuid; use super::GameManagerState; #[tauri::command] pub async fn create_instance( state: State<'_, Mutex>, name: String, version: String, client: ClientType, cover: Option, group: Option, ) -> Result { let manager = &mut state.lock().await.client_manager; let uuid = manager .create_instance(name, version, cover, group, client) .await?; Ok(uuid) } #[tauri::command] pub async fn get_instances( state: State<'_, Mutex>, ) -> Result, String> { let manager = &mut state.lock().await.client_manager; Ok(manager.get_instances_owned()) } #[tauri::command] pub async fn get_instance( state: State<'_, Mutex>, uuid: Uuid, ) -> Result { let manager = &mut state.lock().await.client_manager; let instance = manager.get_instance(uuid)?; Ok(instance.clone()) } #[tauri::command] pub async fn get_manifest( state: State<'_, Mutex>, uuid: Uuid, ) -> Result { let manager = &mut state.lock().await.client_manager; let manifest = manager.get_manifest(uuid)?; Ok(manifest.clone()) }