mirror of
https://github.com/Drop-OSS/drop-app.git
synced 2025-11-13 08:12:44 +10:00
Still needs a massive go-over because there shouldn't be anything referencing tauri in any of the workspaces except the original one. Process manager has been refactored as an example Signed-off-by: quexeky <git@quexeky.dev>
59 lines
1.5 KiB
Rust
59 lines
1.5 KiB
Rust
use std::sync::Mutex;
|
|
|
|
use crate::{AppState, error::process_error::ProcessError, lock};
|
|
|
|
#[tauri::command]
|
|
pub fn launch_game(
|
|
id: String,
|
|
state: tauri::State<'_, Mutex<AppState>>,
|
|
) -> Result<(), ProcessError> {
|
|
let state_lock = lock!(state);
|
|
let mut process_manager_lock = lock!(state_lock.process_manager);
|
|
|
|
//let meta = DownloadableMetadata {
|
|
// id,
|
|
// version: Some(version),
|
|
// download_type: DownloadType::Game,
|
|
//};
|
|
|
|
match process_manager_lock.launch_process(id, &state_lock) {
|
|
Ok(()) => {}
|
|
Err(e) => return Err(e),
|
|
}
|
|
|
|
drop(process_manager_lock);
|
|
drop(state_lock);
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn kill_game(
|
|
game_id: String,
|
|
state: tauri::State<'_, Mutex<AppState>>,
|
|
) -> Result<(), ProcessError> {
|
|
let state_lock = lock!(state);
|
|
let mut process_manager_lock = lock!(state_lock.process_manager);
|
|
process_manager_lock
|
|
.kill_game(game_id)
|
|
.map_err(ProcessError::IOError)
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn open_process_logs(
|
|
game_id: String,
|
|
state: tauri::State<'_, Mutex<AppState>>,
|
|
) -> Result<(), ProcessError> {
|
|
let state_lock = lock!(state);
|
|
let mut process_manager_lock = lock!(state_lock.process_manager);
|
|
|
|
let dir = process_manager_lock.get_log_dir(game_id);
|
|
state
|
|
.handle()
|
|
.opener()
|
|
.open_path(dir.display().to_string(), None::<&str>)
|
|
.map_err(ProcessError::OpenerError)?;
|
|
|
|
process_manager_lock.open_process_logs(game_id)
|
|
}
|