From 9f41829d0ed76f0d67b7673ad16bdf6f2c5a9d7c Mon Sep 17 00:00:00 2001 From: Wind-Explorer Date: Sat, 20 Dec 2025 02:47:47 +0800 Subject: [PATCH] Dolls with friends (pt 1) --- src-tauri/src/remotes/dolls.rs | 2 +- src-tauri/src/services/ws.rs | 47 ++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src-tauri/src/remotes/dolls.rs b/src-tauri/src/remotes/dolls.rs index 2d673cf..79c4fb1 100644 --- a/src-tauri/src/remotes/dolls.rs +++ b/src-tauri/src/remotes/dolls.rs @@ -82,7 +82,7 @@ impl DollsRemote { } pub async fn get_dolls(&self) -> Result, RemoteError> { - let url = format!("{}/dolls", self.base_url); + let url = format!("{}/dolls/me", self.base_url); tracing::info!("DollsRemote::get_dolls - Sending GET request to URL: {}", url); let resp = with_auth(self.client.get(url)).await.send().await?; diff --git a/src-tauri/src/services/ws.rs b/src-tauri/src/services/ws.rs index 93e9cf9..49c543a 100644 --- a/src-tauri/src/services/ws.rs +++ b/src-tauri/src/services/ws.rs @@ -36,6 +36,9 @@ impl WS_EVENT { pub const UNFRIENDED: &str = "unfriended"; pub const FRIEND_CURSOR_POSITION: &str = "friend-cursor-position"; pub const FRIEND_DISCONNECTED: &str = "friend-disconnected"; + pub const FRIEND_DOLL_CREATED: &str = "friend-doll-created"; + pub const FRIEND_DOLL_UPDATED: &str = "friend-doll-updated"; + pub const FRIEND_DOLL_DELETED: &str = "friend-doll-deleted"; } fn on_friend_request_received(payload: Payload, _socket: RawClient) { @@ -140,6 +143,47 @@ fn on_friend_disconnected(payload: Payload, _socket: RawClient) { } } +fn on_friend_doll_created(payload: Payload, _socket: RawClient) { + match payload { + Payload::Text(values) => { + // Log raw JSON for now, as requested + if let Some(first_value) = values.first() { + info!("Received friend-doll-created event: {:?}", first_value); + // Future: Trigger re-fetch or emit to frontend + } else { + info!("Received friend-doll-created event with empty payload"); + } + } + _ => error!("Received unexpected payload format for friend-doll-created"), + } +} + +fn on_friend_doll_updated(payload: Payload, _socket: RawClient) { + match payload { + Payload::Text(values) => { + if let Some(first_value) = values.first() { + info!("Received friend-doll-updated event: {:?}", first_value); + } else { + info!("Received friend-doll-updated event with empty payload"); + } + } + _ => error!("Received unexpected payload format for friend-doll-updated"), + } +} + +fn on_friend_doll_deleted(payload: Payload, _socket: RawClient) { + match payload { + Payload::Text(values) => { + if let Some(first_value) = values.first() { + info!("Received friend-doll-deleted event: {:?}", first_value); + } else { + info!("Received friend-doll-deleted event with empty payload"); + } + } + _ => error!("Received unexpected payload format for friend-doll-deleted"), + } +} + pub async fn report_cursor_data(cursor_position: CursorPosition) { // Only attempt to get clients if lock_r succeeds (it should, but safety first) // and if clients are actually initialized. @@ -225,6 +269,9 @@ pub async fn build_ws_client( .on(WS_EVENT::UNFRIENDED, on_unfriended) .on(WS_EVENT::FRIEND_CURSOR_POSITION, on_friend_cursor_position) .on(WS_EVENT::FRIEND_DISCONNECTED, on_friend_disconnected) + .on(WS_EVENT::FRIEND_DOLL_CREATED, on_friend_doll_created) + .on(WS_EVENT::FRIEND_DOLL_UPDATED, on_friend_doll_updated) + .on(WS_EVENT::FRIEND_DOLL_DELETED, on_friend_doll_deleted) .auth(json!({ "token": token })) .connect() })