mirror of
https://github.com/Drop-OSS/drop-app.git
synced 2025-11-13 00:02:41 +10:00
* feat: add new template options, asahi support, and refactoring * feat: install dir scanning, validation fixes, progress fixes, download manager refactor This kind of ballooned out of scope, but I implemented some much needed fixes for the download manager. First off, I cleanup the Downloadable trait, there was some duplication of function. Second, I refactored the "validate" into the GameDownloadAgent, which calls a 'validate_chunk_logic' yada, same structure as downloading. Third, I fixed the progress and validation issues. Fourth, I added game scanning * feat: out of box support for Asahi Linux * fix: clippy * fix: don't break database
32 lines
1.1 KiB
Rust
32 lines
1.1 KiB
Rust
use std::{fmt::Display, io::Error};
|
|
|
|
use serde_with::SerializeDisplay;
|
|
|
|
#[derive(SerializeDisplay)]
|
|
pub enum ProcessError {
|
|
NotInstalled,
|
|
AlreadyRunning,
|
|
InvalidID,
|
|
InvalidVersion,
|
|
IOError(Error),
|
|
FormatError(String), // String errors supremacy
|
|
InvalidPlatform,
|
|
OpenerError(tauri_plugin_opener::Error)
|
|
}
|
|
|
|
impl Display for ProcessError {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
let s = match self {
|
|
ProcessError::NotInstalled => "Game not installed",
|
|
ProcessError::AlreadyRunning => "Game already running",
|
|
ProcessError::InvalidID => "Invalid game ID",
|
|
ProcessError::InvalidVersion => "Invalid game version",
|
|
ProcessError::IOError(error) => &error.to_string(),
|
|
ProcessError::InvalidPlatform => "This game cannot be played on the current platform",
|
|
ProcessError::FormatError(e) => &format!("Failed to format template: {e}"),
|
|
ProcessError::OpenerError(error) => &format!("Failed to open directory: {error}"),
|
|
};
|
|
write!(f, "{s}")
|
|
}
|
|
}
|