diff --git a/pages/library.vue b/pages/library.vue
index dcb0b84..c91ea64 100644
--- a/pages/library.vue
+++ b/pages/library.vue
@@ -13,7 +13,7 @@
>
![]()
diff --git a/src-tauri/src/db.rs b/src-tauri/src/db.rs
index 74536dc..66d08b5 100644
--- a/src-tauri/src/db.rs
+++ b/src-tauri/src/db.rs
@@ -35,6 +35,7 @@ pub enum DatabaseGameStatus {
#[serde(rename_all = "camelCase")]
pub struct DatabaseGames {
pub install_dirs: Vec
,
+ // Guaranteed to exist if the game also exists in the app state map
pub games_statuses: HashMap,
}
diff --git a/src-tauri/src/downloads/download_agent.rs b/src-tauri/src/downloads/download_agent.rs
index 0bb3b71..9987436 100644
--- a/src-tauri/src/downloads/download_agent.rs
+++ b/src-tauri/src/downloads/download_agent.rs
@@ -212,7 +212,7 @@ impl GameDownloadAgent {
}
pub fn run(&self) -> Result<(), ()> {
- const DOWNLOAD_MAX_THREADS: usize = 4;
+ const DOWNLOAD_MAX_THREADS: usize = 1;
let pool = ThreadPoolBuilder::new()
.num_threads(DOWNLOAD_MAX_THREADS)
diff --git a/src-tauri/src/library.rs b/src-tauri/src/library.rs
index 3fbea71..64372b8 100644
--- a/src-tauri/src/library.rs
+++ b/src-tauri/src/library.rs
@@ -1,3 +1,4 @@
+use std::fmt::format;
use std::sync::Mutex;
use log::info;
@@ -8,6 +9,7 @@ use tauri::{AppHandle, Manager};
use crate::db;
use crate::db::DatabaseGameStatus;
use crate::db::DatabaseImpls;
+use crate::downloads::download_manager::GameDownloadStatus;
use crate::remote::RemoteAccessError;
use crate::{auth::generate_authorization_header, AppState, DB};
@@ -77,9 +79,9 @@ pub fn fetch_library(app: AppHandle) -> Result {
fn fetch_game_logic(id: String, app: tauri::AppHandle) -> Result {
let state = app.state::>();
- let handle = state.lock().unwrap();
+ let mut state_handle = state.lock().unwrap();
- let game = handle.games.get(&id);
+ let game = state_handle.games.get(&id);
if let Some(game) = game {
let db_handle = DB.borrow_data().unwrap();
@@ -95,9 +97,50 @@ fn fetch_game_logic(id: String, app: tauri::AppHandle) -> Result()?;
+ state_handle.games.insert(id.clone(), game.clone());
+
+ let mut db_handle = DB.borrow_data_mut().unwrap();
+
+ if !db_handle.games.games_statuses.contains_key(&id) {
+ db_handle
+ .games
+ .games_statuses
+ .insert(id, DatabaseGameStatus::Remote);
+ }
+
+ let data = FetchGameStruct {
+ game: game.clone(),
+ status: db_handle
+ .games
+ .games_statuses
+ .get(&game.id)
+ .unwrap()
+ .clone(),
+ };
+
+ return Ok(json!(data).to_string());
}
#[tauri::command]