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]]
|
[[package]]
|
||||||
name = "anime-game-core"
|
name = "anime-game-core"
|
||||||
version = "1.13.2"
|
version = "1.13.3"
|
||||||
source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.13.2#a15b8162adcefcc9d99eacbd55ae5cfe1e1fddfe"
|
source = "git+https://github.com/an-anime-team/anime-game-core?tag=1.13.3#8eeb77915ff0c3d68e6b168e1c7f31cc5cc41a02"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bzip2",
|
"bzip2",
|
||||||
|
@ -64,8 +64,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anime-launcher-sdk"
|
name = "anime-launcher-sdk"
|
||||||
version = "1.8.5"
|
version = "1.8.7"
|
||||||
source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.8.5#cedb6f05b5749c3143a235a92ba78c458c4934a8"
|
source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.8.7#8380edbbd9351911c4afb129786309b1274246f0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anime-game-core",
|
"anime-game-core",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
|
|
@ -17,7 +17,7 @@ glib-build-tools = "0.17"
|
||||||
|
|
||||||
[dependencies.anime-launcher-sdk]
|
[dependencies.anime-launcher-sdk]
|
||||||
git = "https://github.com/an-anime-team/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"]
|
features = ["all", "star-rail", "star-rail-patch"]
|
||||||
|
|
||||||
# path = "../anime-launcher-sdk" # ! for dev purposes only
|
# path = "../anime-launcher-sdk" # ! for dev purposes only
|
||||||
|
|
|
@ -301,12 +301,12 @@ impl SimpleComponent for App {
|
||||||
#[watch]
|
#[watch]
|
||||||
set_tooltip_text: Some(&tr_args("predownload-update", [
|
set_tooltip_text: Some(&tr_args("predownload-update", [
|
||||||
("version", match model.state.as_ref() {
|
("version", match model.state.as_ref() {
|
||||||
Some(LauncherState::PredownloadAvailable(game)) => game.latest().to_string(),
|
Some(LauncherState::PredownloadAvailable { diff, .. }) => diff.latest().to_string(),
|
||||||
_ => String::from("?")
|
_ => String::from("?")
|
||||||
}.into()),
|
}.into()),
|
||||||
|
|
||||||
("size", match model.state.as_ref() {
|
("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("?")
|
_ => String::from("?")
|
||||||
}.into())
|
}.into())
|
||||||
])),
|
])),
|
||||||
|
@ -316,11 +316,11 @@ impl SimpleComponent for App {
|
||||||
|
|
||||||
#[watch]
|
#[watch]
|
||||||
set_sensitive: match model.state.as_ref() {
|
set_sensitive: match model.state.as_ref() {
|
||||||
Some(LauncherState::PredownloadAvailable(game)) => {
|
Some(LauncherState::PredownloadAvailable { diff, .. }) => {
|
||||||
let config = Config::get().unwrap();
|
let config = Config::get().unwrap();
|
||||||
let temp = config.launcher.temp.unwrap_or_else(std::env::temp_dir);
|
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
|
_ => false
|
||||||
|
@ -328,11 +328,11 @@ impl SimpleComponent for App {
|
||||||
|
|
||||||
#[watch]
|
#[watch]
|
||||||
set_css_classes: match model.state.as_ref() {
|
set_css_classes: match model.state.as_ref() {
|
||||||
Some(LauncherState::PredownloadAvailable(game)) => {
|
Some(LauncherState::PredownloadAvailable { diff, .. }) => {
|
||||||
let config = Config::get().unwrap();
|
let config = Config::get().unwrap();
|
||||||
let temp = config.launcher.temp.unwrap_or_else(std::env::temp_dir);
|
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"]
|
&["success", "circular"]
|
||||||
} else {
|
} else {
|
||||||
&["warning", "circular"]
|
&["warning", "circular"]
|
||||||
|
@ -358,7 +358,9 @@ impl SimpleComponent for App {
|
||||||
set_icon_name: match &model.state {
|
set_icon_name: match &model.state {
|
||||||
Some(LauncherState::Launch) |
|
Some(LauncherState::Launch) |
|
||||||
Some(LauncherState::PatchNotVerified) |
|
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::PatchNotInstalled) |
|
||||||
Some(LauncherState::PatchUpdateAvailable) => "document-save-symbolic",
|
Some(LauncherState::PatchUpdateAvailable) => "document-save-symbolic",
|
||||||
|
@ -374,6 +376,8 @@ impl SimpleComponent for App {
|
||||||
Some(LauncherState::GameOutdated(_)) |
|
Some(LauncherState::GameOutdated(_)) |
|
||||||
Some(LauncherState::PatchBroken) |
|
Some(LauncherState::PatchBroken) |
|
||||||
Some(LauncherState::PatchUnsafe) |
|
Some(LauncherState::PatchUnsafe) |
|
||||||
|
Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Broken, .. }) |
|
||||||
|
Some(LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unsafe, .. }) |
|
||||||
None => "window-close-symbolic"
|
None => "window-close-symbolic"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -381,13 +385,20 @@ impl SimpleComponent for App {
|
||||||
set_label: &match &model.state {
|
set_label: &match &model.state {
|
||||||
Some(LauncherState::Launch) |
|
Some(LauncherState::Launch) |
|
||||||
Some(LauncherState::PatchNotVerified) |
|
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::PatchNotInstalled) |
|
||||||
Some(LauncherState::PatchUpdateAvailable) => tr("download-patch"),
|
Some(LauncherState::PatchUpdateAvailable) => tr("download-patch"),
|
||||||
|
|
||||||
Some(LauncherState::PatchBroken) => tr("patch-broken"),
|
Some(LauncherState::PatchBroken) |
|
||||||
Some(LauncherState::PatchUnsafe) => tr("patch-unsafe"),
|
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"),
|
Some(LauncherState::TelemetryNotDisabled) => tr("disable-telemetry"),
|
||||||
|
|
||||||
|
@ -436,7 +447,9 @@ impl SimpleComponent for App {
|
||||||
Some(LauncherState::PatchNotVerified) => &["warning", "pill"],
|
Some(LauncherState::PatchNotVerified) => &["warning", "pill"],
|
||||||
|
|
||||||
Some(LauncherState::PatchBroken) |
|
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"],
|
Some(_) => &["suggested-action", "pill"],
|
||||||
|
|
||||||
|
@ -448,8 +461,14 @@ impl SimpleComponent for App {
|
||||||
Some(LauncherState::GameOutdated { .. }) => tr("main-window--version-outdated-tooltip"),
|
Some(LauncherState::GameOutdated { .. }) => tr("main-window--version-outdated-tooltip"),
|
||||||
|
|
||||||
Some(LauncherState::PatchNotVerified) => tr("patch-testing-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()
|
_ => String::new()
|
||||||
}),
|
}),
|
||||||
|
@ -748,8 +767,8 @@ impl SimpleComponent for App {
|
||||||
Ok(latest) => match jadeite::get_metadata() {
|
Ok(latest) => match jadeite::get_metadata() {
|
||||||
Ok(metadata) => {
|
Ok(metadata) => {
|
||||||
let status = GAME.get_version()
|
let status = GAME.get_version()
|
||||||
.map(|version| metadata.hsr.global.get_status(version))
|
.map(|version| metadata.games.hsr.global.get_status(version))
|
||||||
.unwrap_or(metadata.hsr.global.status);
|
.unwrap_or(metadata.games.hsr.global.status);
|
||||||
|
|
||||||
Some((latest.version, status))
|
Some((latest.version, status))
|
||||||
}
|
}
|
||||||
|
@ -914,7 +933,7 @@ impl SimpleComponent for App {
|
||||||
|
|
||||||
#[allow(unused_must_use)]
|
#[allow(unused_must_use)]
|
||||||
AppMsg::PredownloadUpdate => {
|
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);
|
let tmp = Config::get().unwrap().launcher.temp.unwrap_or_else(std::env::temp_dir);
|
||||||
|
|
||||||
self.downloading = true;
|
self.downloading = true;
|
||||||
|
@ -924,7 +943,7 @@ impl SimpleComponent for App {
|
||||||
progress_bar_input.send(ProgressBarMsg::UpdateCaption(Some(tr("downloading"))));
|
progress_bar_input.send(ProgressBarMsg::UpdateCaption(Some(tr("downloading"))));
|
||||||
|
|
||||||
std::thread::spawn(move || {
|
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));
|
progress_bar_input.send(ProgressBarMsg::UpdateProgress(curr, total));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -949,7 +968,8 @@ impl SimpleComponent for App {
|
||||||
AppMsg::PerformAction => unsafe {
|
AppMsg::PerformAction => unsafe {
|
||||||
match self.state.as_ref().unwrap_unchecked() {
|
match self.state.as_ref().unwrap_unchecked() {
|
||||||
LauncherState::PatchNotVerified |
|
LauncherState::PatchNotVerified |
|
||||||
LauncherState::PredownloadAvailable { .. } |
|
LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Verified, .. } |
|
||||||
|
LauncherState::PredownloadAvailable { patch: JadeitePatchStatusVariant::Unverified, .. } |
|
||||||
LauncherState::Launch => launch::launch(sender),
|
LauncherState::Launch => launch::launch(sender),
|
||||||
|
|
||||||
LauncherState::PatchNotInstalled |
|
LauncherState::PatchNotInstalled |
|
||||||
|
|
Loading…
Reference in a new issue