use chat::services::messages::MessageDto; use serde::{Deserialize, Serialize}; use uuid::Uuid; #[derive(Debug, Clone, Deserialize)] #[serde(tag = "op", rename_all = "snake_case")] pub enum ClientFrame { Subscribe { room_id: Uuid, #[serde(default)] resync: Option, }, Unsubscribe { room_id: Uuid, }, Resync { room_id: Uuid, after_seq: i64, }, Typing { room_id: Uuid, #[serde(default)] thread_id: Option, }, Ping, } #[derive(Debug, Clone, Serialize)] #[serde(tag = "type", rename_all = "snake_case")] pub enum ServerFrame { Ready { user_id: i64, session_id: Uuid, }, Event { room_id: Uuid, event: serde_json::Value, }, UserEvent { event: serde_json::Value, }, History { room_id: Uuid, messages: Vec, }, Gap { room_id: Uuid, from: i64, to: i64, }, ResyncRequired { room_id: Uuid, reason: String, }, Error { message: String, }, Pong, Bye { message: String, }, }