From 2977e28991f82cfdc661faca4a81ed5966614958 Mon Sep 17 00:00:00 2001 From: alterwain Date: Tue, 25 Mar 2025 01:06:44 +0300 Subject: [PATCH] modified: src/launcher.rs modified: src/main.rs modified: src/www/portable.html --- src/launcher.rs | 20 ++++++++++++++++++++ src/main.rs | 10 ++++++++++ src/www/portable.html | 8 +++++++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/launcher.rs b/src/launcher.rs index 94d4c89..bbb6b0f 100644 --- a/src/launcher.rs +++ b/src/launcher.rs @@ -778,4 +778,24 @@ pub async fn get_random_bg() -> Result, Box +} + +#[derive(Serialize, Deserialize)] +struct RemoteAsset { + browser_download_url: String +} + +pub async fn check_updates() -> Result, Box> { + let mut r = surf::get("https://gitea.awain.net/api/v1/repos/alterwain/XCraft/releases/latest").await?; + let release: RemoteRelease = r.body_json().await?; + if release.tag_name != env!("CARGO_PKG_VERSION") && !release.assets.is_empty() { + return Ok(Some(release.assets[0].browser_download_url.clone())); + } + Ok(None) } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 57ecfa0..06348e2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -82,6 +82,9 @@ async fn main() { if let Some((ui_action, params, responder)) = receiver.recv().await { let ui_action = &ui_action[16..]; match ui_action { + "github" => { + Command::new("cmd").args(["/C", "start", "https://github.com/alterdekim/XCraft"]).spawn().unwrap(); + }, "jquery" => responder.respond(Response::new(include_bytes!("js/jquery.js"))), "skinview3d" => responder.respond(Response::new(include_bytes!("js/skinview3d.js"))), "tailwind" => responder.respond(Response::new(include_bytes!("js/tailwind.js"))), @@ -338,6 +341,13 @@ async fn main() { } responder.respond(Response::new(serde_json::to_vec(&UIMessage { params: [vec!["load_screenshots".to_string()], svec].concat() }).unwrap())); } + "check_updates" => { + // + if let Ok(Some(file_url)) = launcher::check_updates().await { + + responder.respond(Response::new(serde_json::to_vec(&UIMessage { params: vec!["sidebar_off".to_string(), "show_loading".to_string(), "update_downloads".to_string(), "Updating launcher...".to_string(), "100".to_string()] }).unwrap())); + } + } _ => {} } } diff --git a/src/www/portable.html b/src/www/portable.html index 4f41b6f..325b1a0 100644 --- a/src/www/portable.html +++ b/src/www/portable.html @@ -388,7 +388,7 @@ @@ -466,6 +466,10 @@ } } + function openGithub() { + $.get("github", processParams); + } + function showAccountsSection() { $.post({url: "fetch_credentials_list" }, processParams); } @@ -770,6 +774,8 @@ $.get("fetch_bg", processParams); showAccountsSection(); + $.get("check_updates", processParams); + $('#slim-skin').on('change', function () { $.post({ url: "set_skin_model", data: JSON.stringify({ params: [accountNick, accountDomain, $(this).is(':checked')+""] }) }, processParams); });