From 50e5ba8f50090fec223c1e60ae24cf843574e608 Mon Sep 17 00:00:00 2001 From: GeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com> Date: Mon, 14 Nov 2022 08:21:05 +0100 Subject: refactor: Move GitHub API fetch to submodule and re-use existing function (#51) * refactor: Import all functions from lib So that I don't need to update the header each time I add/remove a function. * refactor: Move function to submodule Move it to module for GitHub API related tasks. * refactor: Re-use existing func for fetching GH API --- src-tauri/src/github/release_notes.rs | 29 ++++++++++++++++++++++++++ src-tauri/src/lib.rs | 38 ----------------------------------- src-tauri/src/main.rs | 9 ++------- 3 files changed, 31 insertions(+), 45 deletions(-) (limited to 'src-tauri') diff --git a/src-tauri/src/github/release_notes.rs b/src-tauri/src/github/release_notes.rs index 20c535ba..9a87c49b 100644 --- a/src-tauri/src/github/release_notes.rs +++ b/src-tauri/src/github/release_notes.rs @@ -27,6 +27,35 @@ async fn fetch_github_releases_api(url: &str) -> Result { Ok(res) } +/// Checks if installed FlightCore version is up-to-date +/// false -> FlightCore install is up-to-date +/// true -> FlightCore install is outdated +pub async fn check_is_flightcore_outdated() -> Result { + // Get newest version number from GitHub API + println!("Checking GitHub API"); + let url = "https://api.github.com/repos/GeckoEidechse/FlightCore/releases/latest"; + let res = fetch_github_releases_api(url).await?; + + let json_response: serde_json::Value = + serde_json::from_str(&res).expect("JSON was not well-formatted"); + println!("Done checking GitHub API"); + + // Extract version number from JSON + let newest_release_version = json_response + .get("tag_name") + .and_then(|value| value.as_str()) + .unwrap(); + + // Get version of installed FlightCore... + let version = env!("CARGO_PKG_VERSION"); + // ...and format it + let version = format!("v{}", version); + + // TODO: This shouldn't be a string compare but promper semver compare + Ok(version != newest_release_version) +} + + #[tauri::command] pub async fn get_northstar_release_notes() -> Result, String> { let url = "https://api.github.com/repos/R2Northstar/Northstar/releases"; diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 4e49c3f9..9a8c46ec 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -355,44 +355,6 @@ pub fn convert_release_candidate_number(version_number: String) -> String { version_number.replace("-rc", "0").replace("00", "") } -/// Checks if installed FlightCore version is up-to-date -/// false -> FlightCore install is up-to-date -/// true -> FlightCore install is outdated -pub async fn check_is_flightcore_outdated() -> Result { - // Get newest version number from GitHub API - println!("Checking GitHub API"); - let url = "https://api.github.com/repos/GeckoEidechse/FlightCore/releases/latest"; - let user_agent = "GeckoEidechse/FlightCore"; - let client = reqwest::Client::new(); - let res = client - .get(url) - .header(reqwest::header::USER_AGENT, user_agent) - .send() - .await - .unwrap() - .text() - .await - .unwrap(); - - let json_response: serde_json::Value = - serde_json::from_str(&res).expect("JSON was not well-formatted"); - println!("Done checking GitHub API"); - - // Extract version number from JSON - let newest_release_version = json_response - .get("tag_name") - .and_then(|value| value.as_str()) - .unwrap(); - - // Get version of installed FlightCore... - let version = env!("CARGO_PKG_VERSION"); - // ...and format it - let version = format!("v{}", version); - - // TODO: This shouldn't be a string compare but promper semver compare - Ok(version != newest_release_version) -} - pub fn get_log_list(game_install: GameInstall) -> Result, String> { let ns_log_folder = format!("{}/R2Northstar/logs", game_install.game_path); diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 1ac41684..7db9e089 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -9,15 +9,10 @@ use std::{ time::Duration, }; -use app::{ - check_is_flightcore_outdated, check_is_valid_game_path, check_northstar_running, - check_origin_running, convert_release_candidate_number, find_game_install_location, - get_enabled_mods, get_host_os, get_log_list, get_northstar_version_number, - install_northstar, launch_northstar, linux_checks_librs, GameInstall, NorthstarMod, -}; +use app::*; mod github; -use github::release_notes::get_northstar_release_notes; +use github::release_notes::{get_northstar_release_notes, check_is_flightcore_outdated}; mod repair_and_verify; use repair_and_verify::{verify_game_files, disable_all_but_core}; -- cgit v1.2.3