aboutsummaryrefslogtreecommitdiff
path: root/src-tauri
diff options
context:
space:
mode:
Diffstat (limited to 'src-tauri')
-rw-r--r--src-tauri/src/github/mod.rs1
-rw-r--r--src-tauri/src/github/release_notes.rs48
-rw-r--r--src-tauri/src/main.rs4
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,
])