Game updates (#187)

* refactor: split umu launcher

* feat: latest version picker + fixes

* feat: frontend latest changes

* feat: game update detection w/ setting

* feat: fixes and refactor for game update

* fix: windows ui

* fix: deps

* feat: update modifications

* feat: missing ui and lock update

* fix: create install dir on init

* fix: clippy

* fix: clippy x2

* feat: add configuration option to toggle updates

* feat: uninstall dropdown on partiallyinstalled
This commit is contained in:
DecDuck
2026-02-25 23:27:30 +11:00
committed by GitHub
parent d7ec7fc25c
commit 82b9912bd0
38 changed files with 1193 additions and 573 deletions
+10 -17
View File
@@ -57,7 +57,9 @@ mod downloads;
mod games;
mod process;
mod remote;
mod scheduler;
mod settings;
mod updates;
use client::*;
use download_manager::*;
@@ -67,6 +69,8 @@ use process::*;
use remote::*;
use settings::*;
use crate::scheduler::scheduler_task;
async fn setup(handle: AppHandle) -> AppState {
let logfile = FileAppender::builder()
.encoder(Box::new(PatternEncoder::new(
@@ -101,6 +105,9 @@ async fn setup(handle: AppHandle) -> AppState {
ProcessManagerWrapper::init(handle.clone());
DownloadManagerWrapper::init(handle.clone());
debug!("checking if database is set up");
let is_set_up = DB.database_is_set_up();
#[cfg(not(target_os = "linux"))]
let umu_state = UmuState::NotNeeded;
@@ -110,9 +117,6 @@ async fn setup(handle: AppHandle) -> AppState {
false => UmuState::NotInstalled,
};
debug!("checking if database is set up");
let is_set_up = DB.database_is_set_up();
scan_install_dirs();
if !is_set_up {
@@ -136,20 +140,7 @@ async fn setup(handle: AppHandle) -> AppState {
for (game_id, status) in statuses {
match status {
GameDownloadStatus::Remote {} => {}
GameDownloadStatus::PartiallyInstalled { .. } => {}
GameDownloadStatus::SetupRequired {
version_name: _,
install_dir,
} => {
let install_dir_path = Path::new(&install_dir);
if !install_dir_path.exists() {
missing_games.push(game_id);
}
}
GameDownloadStatus::Installed {
version_name: _,
install_dir,
} => {
GameDownloadStatus::Installed { install_dir, .. } => {
let install_dir_path = Path::new(&install_dir);
if !install_dir_path.exists() {
missing_games.push(game_id);
@@ -416,6 +407,8 @@ pub fn run() {
.show(|_| {});
}
}
tokio::spawn(async move { scheduler_task().await });
});
Ok(())