#[derive(serde_derive::Deserialize, Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub enum MessageDirectionType {
#[serde(rename = "in")]
Incoming,
#[serde(rename = "out")]
Outgoing,
}
#[derive(serde_derive::Deserialize, Clone, Debug)]
pub struct Message {
#[serde(rename = "_id")]
pub message_id: String,
#[serde(rename = "outMessage")]
pub out_message_id: String,
pub text: String,
#[serde(rename = "type")]
pub direction: MessageDirectionType,
pub unread: bool,
#[serde(rename = "user")]
pub user_id: String,
#[serde(rename = "respondent")]
pub respondent_id: String,
#[serde(skip)]
_non_exhaustive: (),
}
#[derive(serde_derive::Deserialize, Clone, Debug)]
pub struct MessageUpdate {
pub message: Message,
#[serde(skip)]
_non_exhaustive: (),
}
#[derive(serde_derive::Deserialize, Clone, Debug)]
pub struct MessageUnreadUpdate {
#[serde(rename = "_id")]
pub message_id: String,
pub unread: bool,
#[serde(skip)]
_non_exhaustive: (),
}
#[derive(serde_derive::Deserialize, Clone, Debug)]
#[serde(untagged)]
pub enum ConversationUpdate {
NewMessage {
message: Message,
},
MessageRead {
message: MessageUnreadUpdate,
},
}