From 2eef22829d6d2ad21a8940285007fe1d366c04dd Mon Sep 17 00:00:00 2001 From: Wind-Explorer Date: Mon, 15 Dec 2025 21:22:34 +0800 Subject: [PATCH] friends system (appears fully functional) --- src-tauri/src/remotes/friends.rs | 14 ++++++++ src/routes/app-menu/tabs/friends.svelte | 44 +++++++++++++++++++++++-- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/remotes/friends.rs b/src-tauri/src/remotes/friends.rs index fba6184..52b086e 100644 --- a/src-tauri/src/remotes/friends.rs +++ b/src-tauri/src/remotes/friends.rs @@ -11,6 +11,8 @@ pub enum RemoteError { Http(#[from] reqwest::Error), #[error("JSON parse error: {0}")] Json(#[from] serde_json::Error), + #[error("{0}")] + Api(String), } #[derive(Default, Serialize, Deserialize, Clone, Debug, TS)] @@ -175,6 +177,18 @@ impl FriendRemote { "FriendRemote::send_friend_request - Received response with status: {}", resp.status() ); + + if resp.status() == reqwest::StatusCode::CONFLICT { + let text = resp.text().await.unwrap_or_default(); + // try to parse the error message + let error_msg = serde_json::from_str::(&text) + .ok() + .and_then(|v| v.get("message").and_then(|m| m.as_str().map(String::from))) + .unwrap_or_else(|| "Conflict error".to_string()); + + return Err(RemoteError::Api(error_msg)); + } + let resp = resp.error_for_status().map_err(|e| { tracing::error!("FriendRemote::send_friend_request - HTTP error: {}", e); e diff --git a/src/routes/app-menu/tabs/friends.svelte b/src/routes/app-menu/tabs/friends.svelte index 1c92423..3e141d4 100644 --- a/src/routes/app-menu/tabs/friends.svelte +++ b/src/routes/app-menu/tabs/friends.svelte @@ -1,5 +1,6 @@