diff --git a/crates/bonfire/src/websocket.rs b/crates/bonfire/src/websocket.rs index 810befbf9..842620667 100644 --- a/crates/bonfire/src/websocket.rs +++ b/crates/bonfire/src/websocket.rs @@ -486,6 +486,32 @@ async fn worker( topic_signal_s.send(()).await.ok(); } } + ClientMessage::BeginEditing { channel, message } => { + if !subscribed.read().await.contains(&channel) { + continue; + } + + EventV1::MessageStartEditing { + id: message.clone(), + channel: channel.clone(), + user: user_id.clone(), + } + .p(channel.clone()) + .await; + } + ClientMessage::StopEditing { channel, message } => { + if !subscribed.read().await.contains(&channel) { + continue; + } + + EventV1::MessageStopEditing { + id: message.clone(), + channel: channel.clone(), + user: user_id.clone(), + } + .p(channel.clone()) + .await; + } ClientMessage::Ping { data, responded } => { if responded.is_none() { write diff --git a/crates/core/database/src/events/client.rs b/crates/core/database/src/events/client.rs index b35007cc3..721137c59 100644 --- a/crates/core/database/src/events/client.rs +++ b/crates/core/database/src/events/client.rs @@ -221,6 +221,20 @@ pub enum EventV1 { /// User stopped typing in a channel ChannelStopTyping { id: String, user: String }, + /// User started editing a message + MessageStartEditing { + id: String, + channel: String, + user: String, + }, + + /// User stopped editing a message + MessageStopEditing { + id: String, + channel: String, + user: String, + }, + /// User acknowledged message in channel ChannelAck { id: String, diff --git a/crates/core/database/src/events/server.rs b/crates/core/database/src/events/server.rs index cdaf6418b..a52323350 100644 --- a/crates/core/database/src/events/server.rs +++ b/crates/core/database/src/events/server.rs @@ -9,5 +9,7 @@ pub enum ClientMessage { BeginTyping { channel: String }, EndTyping { channel: String }, Subscribe { server_id: String }, + BeginEditing { channel: String, message: String }, + StopEditing { channel: String, message: String }, Ping { data: Ping, responded: Option<()> }, }