From 5b21a0e58b69679a06fcd44471d152021ed65192 Mon Sep 17 00:00:00 2001 From: Siavash Sameni Date: Fri, 27 Mar 2026 09:55:08 +0400 Subject: [PATCH] Fix group messages: push via WebSocket, not just DB queue Group send_to_group was writing directly to sled DB, bypassing the WS push. Connected clients never received group messages. Now tries push_to_client() first (instant WS delivery), falls back to DB queue if recipient is offline. Co-Authored-By: Claude Opus 4.6 (1M context) --- warzone/crates/warzone-server/src/routes/groups.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/warzone/crates/warzone-server/src/routes/groups.rs b/warzone/crates/warzone-server/src/routes/groups.rs index 03123c9..ca93f2c 100644 --- a/warzone/crates/warzone-server/src/routes/groups.rs +++ b/warzone/crates/warzone-server/src/routes/groups.rs @@ -184,8 +184,13 @@ async fn send_to_group( for msg in &req.messages { let to = normalize_fp(&msg.to); if group.members.contains(&to) { - let key = format!("queue:{}:{}", to, uuid::Uuid::new_v4()); - state.db.messages.insert(key.as_bytes(), msg.message.as_slice())?; + // Try WebSocket push first (instant), fall back to DB queue + if state.push_to_client(&to, &msg.message).await { + tracing::debug!("Group '{}': pushed to {} via WS", name, to); + } else { + let key = format!("queue:{}:{}", to, uuid::Uuid::new_v4()); + state.db.messages.insert(key.as_bytes(), msg.message.as_slice())?; + } delivered += 1; } }