aboutsummaryrefslogtreecommitdiff
path: root/src-tauri/src/github
diff options
context:
space:
mode:
authorRémy Raes <contact@remyraes.com>2022-11-09 23:42:54 +0100
committerGitHub <noreply@github.com>2022-11-09 23:42:54 +0100
commit32fd7e37d0a2e72a88bac3462fbfac3a5d4b6015 (patch)
tree02452ede248e12233499caaff4c728d5e2f2ab81 /src-tauri/src/github
parent90b2153a6d2620f55c22c09e9a624f81e50cca44 (diff)
downloadFlightCore-32fd7e37d0a2e72a88bac3462fbfac3a5d4b6015.tar.gz
FlightCore-32fd7e37d0a2e72a88bac3462fbfac3a5d4b6015.zip
feat: Patch notes (#18)
* feat: add Rust method to fetch Northstar release notes * feat: fetch release notes on changelog view mount * feat: only transmit some info to frontend GitHub API gives much information about releases, we only need some: name, publication date and content of such release; so other information is not transmitted to UI. * feat: add ReleaseInfo Typescript interface matching Rust struct * feat: display release notes on a timeline * refactor: remove old releases external link * build: add marked dependency * build: add marked types dev dependency * feat: format release notes' markdown * fix: member typo in ReleaseInfo interface * fix: type releases array * fix: open github links in external browser * fix: adjust marked import * refactor: store release notes in store Release notes are now stored in the app store, so we don't have to fetch them multiple times. * fix: notes fetching method is now async * feat: display a loading bar while release notes are being fetched * feat: display dates in white * feat: release notes' dates are human-readable * fix: make menu bar appear on top of release notes view when scrolled * feat: add custom scrollbar * refactor: format releases creation to please reviewer * Update src-tauri/src/github/mod.rs * Update src-tauri/src/github/release_notes.rs * Update src-vue/src/utils/ReleaseInfo.d.ts * fix: augment scrollbar opacity * fix: only display releases' release date (no more time of the day) * fix: adjust Github request user agent * style: add missing end line in src-vue/src/style.css * fix: link formatting only targets GitHub PR links (whose name begins with a #) * fix: timeline element children cannot be bigger than container card
Diffstat (limited to 'src-tauri/src/github')
-rw-r--r--src-tauri/src/github/mod.rs1
-rw-r--r--src-tauri/src/github/release_notes.rs48
2 files changed, 49 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()
+ );
+}