diff options
Diffstat (limited to 'src-tauri')
-rw-r--r-- | src-tauri/src/github/mod.rs | 1 | ||||
-rw-r--r-- | src-tauri/src/github/release_notes.rs | 48 | ||||
-rw-r--r-- | src-tauri/src/main.rs | 4 |
3 files changed, 53 insertions, 0 deletions
diff --git a/src-tauri/src/github/mod.rs b/src-tauri/src/github/mod.rs new file mode 100644 index 00000000..80a1831a --- /dev/null +++ b/src-tauri/src/github/mod.rs @@ -0,0 +1 @@ +pub mod release_notes; diff --git a/src-tauri/src/github/release_notes.rs b/src-tauri/src/github/release_notes.rs new file mode 100644 index 00000000..db705dab --- /dev/null +++ b/src-tauri/src/github/release_notes.rs @@ -0,0 +1,48 @@ +use std::vec::Vec; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug, Clone)] +pub struct ReleaseInfo { + pub name: String, + pub published_at: String, + pub body: String +} + +#[tauri::command] +pub async fn get_northstar_release_notes() -> Result<Vec<ReleaseInfo>, String> { + println!("Fetching releases notes from GitHub API"); + + let url = "https://api.github.com/repos/R2Northstar/Northstar/releases"; + 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: Vec<serde_json::Value> = + 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() + ); +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index c3172ee8..26f138ba 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -16,6 +16,9 @@ use app::{ install_northstar, launch_northstar, linux_checks_librs, GameInstall, NorthstarMod, }; +mod github; +use github::release_notes::get_northstar_release_notes; + mod repair_and_verify; use repair_and_verify::{verify_game_files, disable_all_but_core}; @@ -91,6 +94,7 @@ fn main() { set_mod_enabled_status_caller, disable_all_but_core_caller, is_debug_mode, + get_northstar_release_notes, linux_checks, get_installed_mods_caller, ]) |