diff options
Diffstat (limited to 'src-tauri/src/lib.rs')
-rw-r--r-- | src-tauri/src/lib.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index c74579d7..6428ce2e 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -342,3 +342,39 @@ pub fn convert_release_candidate_number(version_number: String) -> String { // Doesn't work for larger numbers, e.g. `v1.9.2-rc11` -> `v1.9.2011` (should be `v1.9.211`) version_number.replace("-rc", "0") } + +/// Checks if installed FlightCore version is up-to-date +/// false -> FlightCore install is up-to-date +/// true -> FlightCore install is outdated +pub fn check_is_flightcore_outdated() -> Result<bool, String> { + // 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::blocking::Client::new(); + let res = client + .get(url) + .header(reqwest::header::USER_AGENT, user_agent) + .send() + .unwrap() + .text() + .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) +} |