From 002d967aac31a7c7b883cc6f2003e2db7afa6247 Mon Sep 17 00:00:00 2001 From: GeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com> Date: Mon, 15 May 2023 15:00:55 +0200 Subject: 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 --- src-tauri/src/thunderstore/mod.rs | 24 +++++++++++++++++------- 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, String> { +/// Performs actual fetch from Thunderstore and returns response +async fn fetch_thunderstore_packages() -> Result { 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, 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 = 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({ mods = message; }) .catch((error) => { + showErrorNotification(error); console.error(error); return; }); -- cgit v1.2.3