From cb529f10d06d1558a31a76ff159c965f9f6e55f0 Mon Sep 17 00:00:00 2001 From: Observer KRypt0n_ <suimin.tu.mu.ga.mi@gmail.com> Date: Thu, 8 Jun 2023 10:22:36 +0200 Subject: [PATCH] fix: fixed repair button functionality Resolves #186 --- src/ui/main/repair_game.rs | 42 ++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/src/ui/main/repair_game.rs b/src/ui/main/repair_game.rs index 70a1942..0c71173 100644 --- a/src/ui/main/repair_game.rs +++ b/src/ui/main/repair_game.rs @@ -105,11 +105,45 @@ pub fn repair_game(sender: ComponentSender<App>, progress_bar_input: Sender<Prog let total = broken.len() as f64; - let player_patch = UnityPlayerPatch::from_folder(&config.patch.path, config.launcher.edition).unwrap() - .is_applied(&game_path).unwrap(); + // Get main patch status - let xlua_patch = XluaPatch::from_folder(&config.patch.path, config.launcher.edition).unwrap() - .is_applied(&game_path).unwrap(); + let player_patch = UnityPlayerPatch::from_folder(&config.patch.path, config.launcher.edition) + .and_then(|patch| patch.is_applied(&game_path)); + + let player_patch = match player_patch { + Ok(patch) => patch, + Err(err) => { + // TODO: do we really need this toast message here? Perhaps it's not an error but a warning? + sender.input(AppMsg::Toast { + title: tr("patch-info-fetching-error"), + description: Some(err.to_string()) + }); + + tracing::error!("Failed to get player patch status: {err}. Used config value instead: {}", config.patch.apply_main); + + config.patch.apply_main + } + }; + + // Get xlua patch status + + let xlua_patch = XluaPatch::from_folder(&config.patch.path, config.launcher.edition) + .and_then(|patch| patch.is_applied(&game_path)); + + let xlua_patch = match xlua_patch { + Ok(patch) => patch, + Err(err) => { + // TODO: do we really need this toast message here? Perhaps it's not an error but a warning? + sender.input(AppMsg::Toast { + title: tr("patch-info-fetching-error"), + description: Some(err.to_string()) + }); + + tracing::error!("Failed to get xlua patch status: {err}. Used config value instead: {}", config.patch.apply_xlua); + + config.patch.apply_xlua + } + }; tracing::debug!("Patches status: player({player_patch}), xlua({xlua_patch})");