Skip to content
Clone
194c44c
62 lines 1.1 KB Rust
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<bool>,
},
Unsubscribe {
room_id: Uuid,
},
Resync {
room_id: Uuid,
after_seq: i64,
},
Typing {
room_id: Uuid,
#[serde(default)]
thread_id: Option<Uuid>,
},
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<MessageDto>,
},
Gap {
room_id: Uuid,
from: i64,
to: i64,
},
ResyncRequired {
room_id: Uuid,
reason: String,
},
Error {
message: String,
},
Pong,
Bye {
message: String,
},
}