aboutsummaryrefslogtreecommitdiff
path: root/src-tauri/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src-tauri/src/lib.rs')
-rw-r--r--src-tauri/src/lib.rs36
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)
+}