From 1e791a5511b7303075926f0ba51cdb03dde9f3df Mon Sep 17 00:00:00 2001 From: Observer KRypt0n_ Date: Mon, 17 Jul 2023 21:35:46 +0200 Subject: [PATCH] feat: updated SDK with improved update pre-download support --- Cargo.lock | 8 +++---- Cargo.toml | 2 +- src/ui/main/mod.rs | 56 +++++++++++++++++++++++++++++++--------------- 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba93519..0844fd8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,8 +39,8 @@ dependencies = [ [[package]] name = "anime-game-core" -version = "1.13.2" -source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.13.2#a15b8162adcefcc9d99eacbd55ae5cfe1e1fddfe" +version = "1.13.3" +source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.13.3#8eeb77915ff0c3d68e6b168e1c7f31cc5cc41a02" dependencies = [ "anyhow", "bzip2", @@ -64,8 +64,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.8.5" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.8.5#cedb6f05b5749c3143a235a92ba78c458c4934a8" +version = "1.8.7" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.8.7#8380edbbd9351911c4afb129786309b1274246f0" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 6fadf21..3cb7001 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ glib-build-tools = "0.17" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.8.5" +tag = "1.8.7" features = ["all", "star-rail", "star-rail-patch"] # path = "../anime-launcher-sdk" # ! for dev purposes only diff --git a/src/ui/main/mod.rs b/src/ui/main/mod.rs index d0db32e..8e99641 100644 --- a/src/ui/main/mod.rs +++ b/src/ui/main/mod.rs @@ -301,12 +301,12 @@ impl SimpleComponent for App { #[watch] set_tooltip_text: Some(&tr_args("predownload-update", [ ("version", match model.state.as_ref() { - Some(LauncherState::PredownloadAvailable(game)) => game.latest().to_string(), + Some(LauncherState::PredownloadAvailable { diff, .. }) => diff.latest().to_string(), _ => String::from("?") }.into()), ("size", match model.state.as_ref() { - Some(LauncherState::PredownloadAvailable(game)) => prettify_bytes(game.downloaded_size().unwrap_or(0)), + Some(LauncherState::PredownloadAvailable { diff, .. }) => prettify_bytes(diff.downloaded_size().unwrap_or(0)), _ => String::from("?") }.into()) ])), @@ -316,11 +316,11 @@ impl SimpleComponent for App { #[watch] set_sensitive: match model.state.as_ref() { - Some(LauncherState::PredownloadAvailable(game)) => { + Some(LauncherState::PredownloadAvailable { diff, .. }) => { let config = Config::get().unwrap(); let temp = config.launcher.temp.unwrap_or_else(std::env::temp_dir); - !temp.join(game.file_name().unwrap()).exists() + !temp.join(diff.file_name().unwrap()).exists() } _ => false @@ -328,11 +328,11 @@ impl SimpleComponent for App { #[watch] set_css_classes: match model.state.as_ref() { - Some(LauncherState::PredownloadAvailable(game)) => { + Some(LauncherState::PredownloadAvailable { diff, .. }) => { let config = Config::get().unwrap(); let temp = config.launcher.temp.unwrap_or_else(std::env::temp_dir); - if temp.join(game.file_name().unwrap()).exists() { + if temp.join(diff.file_name().unwrap()).exists() { &["success", "circular"] } else { &["warning", "circular"] @@ -358,7 +358,9 @@ impl SimpleComponent for App { set_icon_name: match &model.state { Some(LauncherState::Launch) | Some(LauncherState::PatchNotVerified) | - Some(LauncherState::PredownloadAvailable { .. }) => "media-playback-start-symbolic", + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Verified, .. }) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unverified, .. }) + => "media-playback-start-symbolic", Some(LauncherState::PatchNotInstalled) | Some(LauncherState::PatchUpdateAvailable) => "document-save-symbolic", @@ -374,6 +376,8 @@ impl SimpleComponent for App { Some(LauncherState::GameOutdated(_)) | Some(LauncherState::PatchBroken) | Some(LauncherState::PatchUnsafe) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Broken, .. }) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. }) | None => "window-close-symbolic" }, @@ -381,13 +385,20 @@ impl SimpleComponent for App { set_label: &match &model.state { Some(LauncherState::Launch) | Some(LauncherState::PatchNotVerified) | - Some(LauncherState::PredownloadAvailable { .. }) => tr("launch"), + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Verified, .. }) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unverified, .. }) + => tr("launch"), Some(LauncherState::PatchNotInstalled) | Some(LauncherState::PatchUpdateAvailable) => tr("download-patch"), - Some(LauncherState::PatchBroken) => tr("patch-broken"), - Some(LauncherState::PatchUnsafe) => tr("patch-unsafe"), + Some(LauncherState::PatchBroken) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Broken, .. }) + => tr("patch-broken"), + + Some(LauncherState::PatchUnsafe) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. }) + => tr("patch-unsafe"), Some(LauncherState::TelemetryNotDisabled) => tr("disable-telemetry"), @@ -436,7 +447,9 @@ impl SimpleComponent for App { Some(LauncherState::PatchNotVerified) => &["warning", "pill"], Some(LauncherState::PatchBroken) | - Some(LauncherState::PatchUnsafe) => &["error", "pill"], + Some(LauncherState::PatchUnsafe) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Broken, .. }) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. }) => &["error", "pill"], Some(_) => &["suggested-action", "pill"], @@ -448,8 +461,14 @@ impl SimpleComponent for App { Some(LauncherState::GameOutdated { .. }) => tr("main-window--version-outdated-tooltip"), Some(LauncherState::PatchNotVerified) => tr("patch-testing-tooltip"), - Some(LauncherState::PatchBroken) => tr("patch-broken-tooltip"), - Some(LauncherState::PatchUnsafe) => tr("patch-unsafe-tooltip"), + + Some(LauncherState::PatchBroken) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Broken, .. }) + => tr("patch-broken-tooltip"), + + Some(LauncherState::PatchUnsafe) | + Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. }) + => tr("patch-unsafe-tooltip"), _ => String::new() }), @@ -748,8 +767,8 @@ impl SimpleComponent for App { Ok(latest) => match jadeite::get_metadata() { Ok(metadata) => { let status = GAME.get_version() - .map(|version| metadata.hsr.global.get_status(version)) - .unwrap_or(metadata.hsr.global.status); + .map(|version| metadata.games.hsr.global.get_status(version)) + .unwrap_or(metadata.games.hsr.global.status); Some((latest.version, status)) } @@ -914,7 +933,7 @@ impl SimpleComponent for App { #[allow(unused_must_use)] AppMsg::PredownloadUpdate => { - if let Some(LauncherState::PredownloadAvailable(mut game)) = self.state.clone() { + if let Some(LauncherState::PredownloadAvailable { mut diff, .. }) = self.state.clone() { let tmp = Config::get().unwrap().launcher.temp.unwrap_or_else(std::env::temp_dir); self.downloading = true; @@ -924,7 +943,7 @@ impl SimpleComponent for App { progress_bar_input.send(ProgressBarMsg::UpdateCaption(Some(tr("downloading")))); std::thread::spawn(move || { - let result = game.download_to(&tmp, clone!(@strong progress_bar_input => move |curr, total| { + let result = diff.download_to(&tmp, clone!(@strong progress_bar_input => move |curr, total| { progress_bar_input.send(ProgressBarMsg::UpdateProgress(curr, total)); })); @@ -949,7 +968,8 @@ impl SimpleComponent for App { AppMsg::PerformAction => unsafe { match self.state.as_ref().unwrap_unchecked() { LauncherState::PatchNotVerified | - LauncherState::PredownloadAvailable { .. } | + LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Verified, .. } | + LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unverified, .. } | LauncherState::Launch => launch::launch(sender), LauncherState::PatchNotInstalled |