aboutsummaryrefslogtreecommitdiff
path: root/src-tauri/src/github
diff options
context:
space:
mode:
authorGeckoEidechse <gecko.eidechse+git@pm.me>2023-01-29 15:19:18 +0100
committerGeckoEidechse <gecko.eidechse+git@pm.me>2023-01-29 15:19:18 +0100
commit672201785222ce0905cda8b228b1390899c1d1e8 (patch)
treec3d94ec262697b8024d89f39c1209791c2c72476 /src-tauri/src/github
parentb66410e8c19e89acd39628350c4fe70e0e85ff32 (diff)
parent31b32c725ce4f47a6726cb0d8ef5f21ec6030580 (diff)
downloadFlightCore-fix/add-empty-dist-folder.tar.gz
FlightCore-fix/add-empty-dist-folder.zip
Merge branch 'main' into fix/add-empty-dist-folderfix/add-empty-dist-folder
Diffstat (limited to 'src-tauri/src/github')
-rw-r--r--src-tauri/src/github/release_notes.rs65
1 files changed, 24 insertions, 41 deletions
diff --git a/src-tauri/src/github/release_notes.rs b/src-tauri/src/github/release_notes.rs
index f139ead5..758f7ace 100644
--- a/src-tauri/src/github/release_notes.rs
+++ b/src-tauri/src/github/release_notes.rs
@@ -1,3 +1,4 @@
+use crate::constants::APP_USER_AGENT;
use serde::{Deserialize, Serialize};
use std::vec::Vec;
@@ -8,15 +9,20 @@ pub struct ReleaseInfo {
pub body: String,
}
+#[derive(Serialize, Deserialize, Debug, Clone)]
+pub struct FlightCoreVersion {
+ tag_name: String,
+ published_at: String,
+}
+
// Fetches repo release API and returns response as string
async fn fetch_github_releases_api(url: &str) -> Result<String, String> {
println!("Fetching releases notes from GitHub API");
- let user_agent = "R2NorthstarTools/FlightCore";
let client = reqwest::Client::new();
let res = client
.get(url)
- .header(reqwest::header::USER_AGENT, user_agent)
+ .header(reqwest::header::USER_AGENT, APP_USER_AGENT)
.send()
.await
.unwrap()
@@ -27,24 +33,26 @@ async fn fetch_github_releases_api(url: &str) -> Result<String, String> {
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<bool, String> {
+/// Gets newest FlighCore version from GitHub
+#[tauri::command]
+pub async fn get_newest_flightcore_version() -> Result<FlightCoreVersion, String> {
// Get newest version number from GitHub API
println!("Checking GitHub API");
let url = "https://api.github.com/repos/R2NorthstarTools/FlightCore/releases/latest";
let res = fetch_github_releases_api(url).await?;
- let json_response: serde_json::Value =
+ let flightcore_version: FlightCoreVersion =
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();
+ Ok(flightcore_version)
+}
+
+/// 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<bool, String> {
+ let newest_flightcore_release = get_newest_flightcore_version().await?;
// Get version of installed FlightCore...
let version = env!("CARGO_PKG_VERSION");
@@ -52,16 +60,10 @@ pub async fn check_is_flightcore_outdated() -> Result<bool, String> {
let version = format!("v{}", version);
// TODO: This shouldn't be a string compare but promper semver compare
- let is_outdated = version != newest_release_version;
+ let is_outdated = version != newest_flightcore_release.tag_name;
// If outdated, check how new the update is
if is_outdated {
- // Extract release date from JSON
- let release_date = json_response
- .get("published_at")
- .and_then(|value| value.as_str())
- .unwrap();
-
// Time to wait (2h) h * m * s
let threshold_seconds = 2 * 60 * 60;
@@ -69,7 +71,7 @@ pub async fn check_is_flightcore_outdated() -> Result<bool, String> {
let current_time = chrono::Utc::now();
// Get latest release time from GitHub API response
- let result = chrono::DateTime::parse_from_rfc3339(release_date)
+ let result = chrono::DateTime::parse_from_rfc3339(&newest_flightcore_release.published_at)
.unwrap()
.with_timezone(&chrono::Utc);
@@ -91,28 +93,9 @@ pub async fn get_northstar_release_notes() -> Result<Vec<ReleaseInfo>, String> {
let url = "https://api.github.com/repos/R2Northstar/Northstar/releases";
let res = fetch_github_releases_api(url).await?;
- let json_response: Vec<serde_json::Value> =
+ let release_info_vector: Vec<ReleaseInfo> =
serde_json::from_str(&res).expect("JSON was not well-formatted");
println!("Done checking GitHub API");
- return Ok(json_response
- .iter()
- .map(|release| ReleaseInfo {
- name: release
- .get("name")
- .and_then(|value| value.as_str())
- .unwrap()
- .to_string(),
- published_at: release
- .get("published_at")
- .and_then(|value| value.as_str())
- .unwrap()
- .to_string(),
- body: release
- .get("body")
- .and_then(|value| value.as_str())
- .unwrap()
- .to_string(),
- })
- .collect());
+ return Ok(release_info_vector);
}