diff --git a/Cargo.lock b/Cargo.lock index 959cae8..66a0e48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,8 +82,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.17.0" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.17.0#a17a0824344d24bf02de00aee71967b028c176bb" +version = "1.17.1" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.17.1#017d0d164f7d8b16043d42a8be7187c21951faf0" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 929ee54..06db22d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ glib-build-tools = "0.20" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.17.0" +tag = "1.17.1" features = ["all", "star-rail", "star-rail-patch"] # path = "../anime-launcher-sdk" # ! for dev purposes only diff --git a/src/ui/first_run/default_paths.rs b/src/ui/first_run/default_paths.rs index 57b8360..8d76f11 100644 --- a/src/ui/first_run/default_paths.rs +++ b/src/ui/first_run/default_paths.rs @@ -353,7 +353,7 @@ impl SimpleAsyncComponent for DefaultPathsApp { DefaultPathsAppMsg::Continue => { match self.update_config() { Ok(_) => { - sender.output(Self::Output::ScrollToSelectVoiceovers); + sender.output(Self::Output::ScrollToDownloadComponents); } Err(err) => { diff --git a/src/ui/main/mod.rs b/src/ui/main/mod.rs index 74a5445..2e2adb0 100644 --- a/src/ui/main/mod.rs +++ b/src/ui/main/mod.rs @@ -990,31 +990,36 @@ impl SimpleComponent for App { // Update initial patch status - tasks.push(std::thread::spawn(clone!(@strong sender => move || { - // Get main patch status - sender.input(AppMsg::SetMainPatch(match jadeite::get_metadata() { - Ok(metadata) => { - let status = GAME.get_version() - .map(|version| metadata.games.hsr.global.get_status(version)) - .unwrap_or(metadata.games.hsr.global.status); + tasks.push(std::thread::spawn(clone!( + #[strong] + sender, - Some((metadata.jadeite.version, status)) - } + move || { + // Get main patch status + sender.input(AppMsg::SetMainPatch(match jadeite::get_metadata() { + Ok(metadata) => { + let status = GAME.get_version() + .map(|version| metadata.games.hsr.global.get_status(version)) + .unwrap_or(metadata.games.hsr.global.status); - Err(err) => { - tracing::error!("Failed to fetch patch metadata: {err}"); + Some((metadata.jadeite.version, status)) + } - sender.input(AppMsg::Toast { - title: tr!("patch-info-fetching-error"), - description: Some(err.to_string()) - }); + Err(err) => { + tracing::error!("Failed to fetch patch metadata: {err}"); - None - } - })); + sender.input(AppMsg::Toast { + title: tr!("patch-info-fetching-error"), + description: Some(err.to_string()) + }); - tracing::info!("Updated patch status"); - }))); + None + } + })); + + tracing::info!("Updated patch status"); + } + ))); // Update initial game version status @@ -1089,10 +1094,10 @@ impl SimpleComponent for App { "locale" = locale.to_name() }))))); } - } - StateUpdating::Patch => { - sender.input(AppMsg::SetLoadingStatus(Some(Some(tr!("loading-launcher-state--patch"))))); + StateUpdating::Patch => { + sender.input(AppMsg::SetLoadingStatus(Some(Some(tr!("loading-launcher-state--patch"))))); + } } } } diff --git a/src/ui/main/update_patch.rs b/src/ui/main/update_patch.rs index dfe57b3..b9ba48a 100644 --- a/src/ui/main/update_patch.rs +++ b/src/ui/main/update_patch.rs @@ -17,33 +17,38 @@ pub fn update_patch(sender: ComponentSender, progress_bar_input: Sender move |state| { - match &state { - InstallerUpdate::DownloadingError(err) => { - tracing::error!("Downloading failed: {err}"); + .and_then(|patch| patch.install(config.patch.path, clone!( + #[strong] + sender, - sender.input(AppMsg::Toast { - title: tr!("downloading-failed"), - description: Some(err.to_string()) - }); + move |state| { + match &state { + InstallerUpdate::DownloadingError(err) => { + tracing::error!("Downloading failed: {err}"); + + sender.input(AppMsg::Toast { + title: tr!("downloading-failed"), + description: Some(err.to_string()) + }); + } + + InstallerUpdate::UnpackingError(err) => { + tracing::error!("Unpacking failed: {err}"); + + sender.input(AppMsg::Toast { + title: tr!("unpacking-failed"), + description: Some(err.clone()) + }); + } + + _ => () } - InstallerUpdate::UnpackingError(err) => { - tracing::error!("Unpacking failed: {err}"); - - sender.input(AppMsg::Toast { - title: tr!("unpacking-failed"), - description: Some(err.clone()) - }); + #[allow(unused_must_use)] { + progress_bar_input.send(ProgressBarMsg::UpdateFromState(state.into())); } - - _ => () } - - #[allow(unused_must_use)] { - progress_bar_input.send(ProgressBarMsg::UpdateFromState(state.into())); - } - }))); + ))); if let Err(err) = result { tracing::error!("Failed to download latest patch version"); diff --git a/src/ui/preferences/general/mod.rs b/src/ui/preferences/general/mod.rs index 4e29f62..f9271b0 100644 --- a/src/ui/preferences/general/mod.rs +++ b/src/ui/preferences/general/mod.rs @@ -22,6 +22,8 @@ pub mod components; use components::*; +use crate::ui::preferences::main::PreferencesAppMsg; + use crate::i18n::*; use crate::*;