diff options
author | Rémy Raes <contact@remyraes.com> | 2022-11-09 23:42:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-09 23:42:54 +0100 |
commit | 32fd7e37d0a2e72a88bac3462fbfac3a5d4b6015 (patch) | |
tree | 02452ede248e12233499caaff4c728d5e2f2ab81 /src-tauri/src/github | |
parent | 90b2153a6d2620f55c22c09e9a624f81e50cca44 (diff) | |
download | FlightCore-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.rs | 1 | ||||
-rw-r--r-- | src-tauri/src/github/release_notes.rs | 48 |
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() + ); +} |