feat(download & db): combined db and download interface improvements

This commit is contained in:
DecDuck
2024-12-07 11:00:35 +11:00
parent 8670bca834
commit de52dac0ab
10 changed files with 186 additions and 80 deletions

View File

@ -187,7 +187,6 @@ impl GameDownloadAgent {
drop(db_lock);
let manifest = self.manifest.lock().unwrap().clone().unwrap();
let version = self.version.clone();
let game_id = self.id.clone();
let data_base_dir_path = Path::new(&data_base_dir);

View File

@ -11,7 +11,11 @@ use log::{error, info, warn};
use rustbreak::Database;
use tauri::{AppHandle, Emitter};
use crate::{db::DatabaseGameStatus, library::GameUpdateEvent, DB};
use crate::{
db::DatabaseGameStatus,
library::{on_game_complete, GameUpdateEvent},
DB,
};
use super::{
download_agent::{GameDownloadAgent, GameDownloadError},
@ -167,11 +171,11 @@ impl DownloadManagerBuilder {
if interface.id == game_id {
info!("Popping consumed data");
self.download_queue.pop_front();
self.download_agent_registry.remove(&game_id);
let download_agent = self.download_agent_registry.remove(&game_id).unwrap();
self.active_control_flag = None;
*self.progress.lock().unwrap() = None;
self.set_game_status(game_id, DatabaseGameStatus::Installed);
on_game_complete(game_id, download_agent.version.clone(), &self.app_handle);
}
}
self.sender.send(DownloadManagerSignal::Go).unwrap();
@ -190,11 +194,12 @@ impl DownloadManagerBuilder {
id: id.clone(),
status: Mutex::new(agent_status),
};
let version_name = download_agent.version.clone();
self.download_agent_registry
.insert(interface_data.id.clone(), download_agent);
self.download_queue.append(interface_data);
self.set_game_status(id, DatabaseGameStatus::Queued);
self.set_game_status(id, DatabaseGameStatus::Queued { version_name });
}
fn manage_go_signal(&mut self) {
@ -213,6 +218,8 @@ impl DownloadManagerBuilder {
.clone();
self.current_game_interface = Some(agent_data);
let version_name = download_agent.version.clone();
let progress_object = download_agent.progress.clone();
*self.progress.lock().unwrap() = Some(progress_object);
@ -240,7 +247,7 @@ impl DownloadManagerBuilder {
self.set_status(DownloadManagerStatus::Downloading);
self.set_game_status(
self.current_game_interface.as_ref().unwrap().id.clone(),
DatabaseGameStatus::Downloading,
DatabaseGameStatus::Downloading { version_name },
);
}
fn manage_error_signal(&self, error: GameDownloadError) {
@ -251,7 +258,7 @@ impl DownloadManagerBuilder {
self.set_game_status(
self.current_game_interface.as_ref().unwrap().id.clone(),
DatabaseGameStatus::Remote,
DatabaseGameStatus::Remote {},
);
}
fn manage_cancel_signal(&mut self, game_id: String) {