diff options
author | GeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com> | 2023-05-15 15:00:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-15 15:00:55 +0200 |
commit | 002d967aac31a7c7b883cc6f2003e2db7afa6247 (patch) | |
tree | 61adaea01c5a9517db61ed13c0984b28436fdf73 | |
parent | 11beab3bc57412d5be72c5dec2948bad3e29ac44 (diff) | |
download | FlightCore-002d967aac31a7c7b883cc6f2003e2db7afa6247.tar.gz FlightCore-002d967aac31a7c7b883cc6f2003e2db7afa6247.zip |
fix: Do not crash if not able to connect to TS (#346)
* fix: Do not crash if not able to connect to TS
Removes a bunch of `unwrap`s that would cause the thread to crash if
connection to Thunderstore failed.
* feat: Show failure notification in frontend
-rw-r--r-- | src-tauri/src/thunderstore/mod.rs | 24 | ||||
-rw-r--r-- | src-vue/src/plugins/store.ts | 1 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src-tauri/src/thunderstore/mod.rs b/src-tauri/src/thunderstore/mod.rs index bd4204b4..fc2acb02 100644 --- a/src-tauri/src/thunderstore/mod.rs +++ b/src-tauri/src/thunderstore/mod.rs @@ -40,24 +40,34 @@ pub struct ThunderstoreModVersion { pub file_size: i64, } -/// Queries Thunderstore packages API -#[tauri::command] -pub async fn query_thunderstore_packages_api() -> Result<Vec<ThunderstoreMod>, String> { +/// Performs actual fetch from Thunderstore and returns response +async fn fetch_thunderstore_packages() -> Result<String, reqwest::Error> { log::info!("Fetching Thunderstore API"); // Fetches let url = "https://northstar.thunderstore.io/api/v1/package/"; let client = reqwest::Client::new(); - let res = client + client .get(url) .header(reqwest::header::USER_AGENT, APP_USER_AGENT) .send() - .await - .unwrap() + .await? .text() .await - .unwrap(); +} + +/// Queries Thunderstore packages API +#[tauri::command] +pub async fn query_thunderstore_packages_api() -> Result<Vec<ThunderstoreMod>, String> { + let res = match fetch_thunderstore_packages().await { + Ok(res) => res, + Err(err) => { + let warn_response = format!("Couldn't fetch from Thunderstore: {err}"); + log::warn!("{warn_response}"); + return Err(warn_response); + } + }; // Parse response let parsed_json: Vec<ThunderstoreMod> = match serde_json::from_str(&res) { diff --git a/src-vue/src/plugins/store.ts b/src-vue/src/plugins/store.ts index 00b8f35a..de4b3816 100644 --- a/src-vue/src/plugins/store.ts +++ b/src-vue/src/plugins/store.ts @@ -272,6 +272,7 @@ export const store = createStore<FlightCoreStore>({ mods = message; }) .catch((error) => { + showErrorNotification(error); console.error(error); return; }); |