diff --git a/Cargo.toml b/Cargo.toml index 7490e5a..727fb6c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ name = "town-of-us-updater" version = "1.0.0" edition = "2021" +build = "src/build.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -12,4 +13,8 @@ fs_extra = "1.2.0" dirs = "4.0.0" reqwest = {version = "0.11.11", features = ["blocking"]} iui = "0.3.0" -serde_json = "1.0" \ No newline at end of file +serde_json = "1.0" +tokio = {version="1", features=["full"]} + +[build-dependencies] +embed-resource = "1.6" diff --git a/assets/icon.ico b/assets/icon.ico new file mode 100644 index 0000000..5eded10 Binary files /dev/null and b/assets/icon.ico differ diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000..6563a2e Binary files /dev/null and b/assets/logo.png differ diff --git a/assets/main.rc b/assets/main.rc new file mode 100644 index 0000000..1690989 --- /dev/null +++ b/assets/main.rc @@ -0,0 +1 @@ +1 ICON "icon.ico" \ No newline at end of file diff --git a/src/build.rs b/src/build.rs new file mode 100644 index 0000000..5e63901 --- /dev/null +++ b/src/build.rs @@ -0,0 +1,5 @@ +extern crate embed_resource; + +fn main() { + embed_resource::compile("assets/main.rc"); +} diff --git a/src/main.rs b/src/main.rs index 4a0bcbb..02e18ba 100644 --- a/src/main.rs +++ b/src/main.rs @@ -63,7 +63,7 @@ fn unmod_among_us_folder(folder_path: &Path) { fs::remove_dir_all(mono_path).unwrap_or_default(); } -fn get_latest_updater_version() -> (String, String) { +async fn get_latest_updater_version() -> Result<(String, String), reqwest::Error> { let version = env!("CARGO_PKG_VERSION"); let mut cur_vers = version.split('.'); @@ -71,10 +71,9 @@ fn get_latest_updater_version() -> (String, String) { let minor_ver = cur_vers.next().unwrap().parse::().unwrap(); let patch_ver = cur_vers.next().unwrap().parse::().unwrap(); - let body = reqwest::blocking::get( - "https://git.dormedas.com/api/v1/repos/dormedas/town-of-us-updater/releases", - ); - let root: serde_json::Value = serde_json::from_str(&body.unwrap().text().unwrap()).unwrap(); + let body = + reqwest::get("https://git.dormedas.com/api/v1/repos/dormedas/town-of-us-updater/releases"); + let root: serde_json::Value = serde_json::from_str(&body.await?.text().await?).unwrap(); for i in root.as_array().unwrap() { let tag_name = i["tag_name"].as_str().unwrap(); @@ -109,13 +108,15 @@ fn get_latest_updater_version() -> (String, String) { } } - (String::from("no"), String::from("yes")) + Ok((String::from("no"), String::from("yes"))) } -fn main() { +#[tokio::main] +async fn main() { let version = env!("CARGO_PKG_VERSION"); println!("Updater Version: {}", version); - let _version_check_thread_handle = thread::spawn(move || get_latest_updater_version()); + get_latest_updater_version().await.unwrap(); + //let _version_check_thread_handle = thread::spawn(move || get_latest_updater_version()); // CREATE PROGRAM DIRECTORY let mut data_path = dirs::data_dir().unwrap(); @@ -177,7 +178,9 @@ fn main() { let among_us_version = determine_among_us_version(String::from(among_us_folder.to_str().unwrap())).unwrap(); let ver_url: (String, String, bool) = - determine_town_of_us_url(among_us_version.to_string().clone()).unwrap(); + determine_town_of_us_url(among_us_version.to_string().clone()) + .await + .unwrap(); let version_smash = format!( "{}-{}", @@ -266,11 +269,15 @@ fn main() { // for i in iter { let existing_ver_smash = i.unwrap().file_name(); let mut ver_smash_split = existing_ver_smash.to_str().unwrap().split("-"); + let auv = ver_smash_split.next().unwrap(); let button_string: String = format!( - "Among Us {} ToU {}", - ver_smash_split.next().unwrap(), + "Among Us {} Town of Us {}", + auv, ver_smash_split.next().unwrap() ); + let mut group_vbox = VerticalBox::new(&ui); + let mut group = Group::new(&ui, auv.clone()); + let mut button = Button::new(&ui, button_string.as_str()); button.on_clicked(&ui, { let ui = ui.clone(); @@ -284,7 +291,9 @@ fn main() { btn.set_text(&ui, "Launching Among Us..."); } }); - vbox.append(&ui, button, LayoutStrategy::Stretchy); + group_vbox.append(&ui, button, LayoutStrategy::Stretchy); + group.set_child(&ui, group_vbox); + vbox.append(&ui, group, LayoutStrategy::Stretchy); println!("{}", existing_ver_smash.clone().to_str().unwrap()); } } @@ -321,13 +330,14 @@ fn main() { } // Returns (Version, URL) -fn determine_town_of_us_url(among_us_version: String) -> Option<(String, String, bool)> { - let markdown = reqwest::blocking::get( - "https://raw.githubusercontent.com/eDonnes124/Town-Of-Us-R/master/README.md", - ) - .unwrap() - .text() - .unwrap(); +async fn determine_town_of_us_url(among_us_version: String) -> Option<(String, String, bool)> { + let markdown = + reqwest::get("https://raw.githubusercontent.com/eDonnes124/Town-Of-Us-R/master/README.md") + .await + .unwrap() + .text() + .await + .unwrap(); let mut line = markdown.find(&among_us_version); let mut line_offset = 0; let mut official_compatibility = false;