feat: updated SDK with improved update pre-download support
This commit is contained in:
parent
e0d4bf7981
commit
1e791a5511
3 changed files with 43 additions and 23 deletions
8
Cargo.lock
generated
8
Cargo.lock
generated
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 |
|
||||
|
|
Loading…
Reference in a new issue