feat: updated SDK with improved update pre-download support

This commit is contained in:
Observer KRypt0n_ 2023-07-17 21:35:46 +02:00
parent e0d4bf7981
commit 1e791a5511
No known key found for this signature in database
GPG key ID: 844DA47BA25FE1E2
3 changed files with 43 additions and 23 deletions

8
Cargo.lock generated
View file

@ -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",

View file

@ -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

View file

@ -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 |