diff --git a/desktop/composables/state-navigation.ts b/desktop/composables/state-navigation.ts index 790d2588..f7a9b4b7 100644 --- a/desktop/composables/state-navigation.ts +++ b/desktop/composables/state-navigation.ts @@ -1,4 +1,5 @@ import { listen } from "@tauri-apps/api/event"; +import { data } from "autoprefixer"; import { AppStatus, type AppState } from "~/types"; export function setupHooks() { @@ -18,6 +19,20 @@ export function setupHooks() { router.push("/store"); }); + listen("download_error", (event) => { + createModal( + ModalType.Notification, + { + title: "Drop encountered an error while downloading", + description: `Drop encountered an error while downloading your game: "${( + event.payload as unknown as string + ).toString()}"`, + buttonText: "Close" + }, + (e, c) => c() + ); + }); + /* document.addEventListener("contextmenu", (event) => { diff --git a/desktop/src-tauri/src/downloads/download_agent.rs b/desktop/src-tauri/src/downloads/download_agent.rs index 4657961b..b3dd3c02 100644 --- a/desktop/src-tauri/src/downloads/download_agent.rs +++ b/desktop/src-tauri/src/downloads/download_agent.rs @@ -297,6 +297,7 @@ impl GameDownloadAgent { } } Err(e) => { + error!("{}", e); self.sender.send(DownloadManagerSignal::Error(e)).unwrap(); } } diff --git a/desktop/src-tauri/src/downloads/download_manager_builder.rs b/desktop/src-tauri/src/downloads/download_manager_builder.rs index be1a06dc..6719b3fe 100644 --- a/desktop/src-tauri/src/downloads/download_manager_builder.rs +++ b/desktop/src-tauri/src/downloads/download_manager_builder.rs @@ -491,6 +491,10 @@ impl DownloadManagerBuilder { self.stop_and_wait_current_download(); self.remove_and_cleanup_front_game(¤t_status.id); // Remove all the locks and shit, and remove from queue + self.app_handle + .emit("download_error", error.to_string()) + .unwrap(); + let mut lock = current_status.status.lock().unwrap(); *lock = GameDownloadStatus::Error; self.set_status(DownloadManagerStatus::Error(error)); diff --git a/desktop/src-tauri/src/process/process_manager.rs b/desktop/src-tauri/src/process/process_manager.rs index d9c8cf68..a854e7bd 100644 --- a/desktop/src-tauri/src/process/process_manager.rs +++ b/desktop/src-tauri/src/process/process_manager.rs @@ -46,12 +46,10 @@ impl ProcessManager<'_> { (Platform::Linux, Platform::Linux), &NativeGameLauncher {} as &(dyn ProcessHandler + Sync + Send + 'static), ), - /* ( (Platform::Linux, Platform::Windows), &UMULauncher {} as &(dyn ProcessHandler + Sync + Send + 'static) ) - */ ]), } } diff --git a/desktop/src-tauri/src/remote.rs b/desktop/src-tauri/src/remote.rs index a70a748a..f62e6e2f 100644 --- a/desktop/src-tauri/src/remote.rs +++ b/desktop/src-tauri/src/remote.rs @@ -1,4 +1,5 @@ use std::{ + error::Error, fmt::{Display, Formatter}, sync::{Arc, Mutex}, }; @@ -26,7 +27,16 @@ pub enum RemoteAccessError { impl Display for RemoteAccessError { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { - RemoteAccessError::FetchError(error) => write!(f, "{}", error), + RemoteAccessError::FetchError(error) => write!( + f, + "{}: {}", + error, + error + .source() + .map(|e| e.to_string()) + .or_else(|| Some("Unknown error".to_string())) + .unwrap() + ), RemoteAccessError::ParsingError(parse_error) => { write!(f, "{}", parse_error) }