client: implements event/updates websocket
This commit is contained in:
17
kordophone/src/model/event.rs
Normal file
17
kordophone/src/model/event.rs
Normal file
@@ -0,0 +1,17 @@
|
||||
use crate::model::{Conversation, Message, UpdateItem};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum Event {
|
||||
ConversationChanged(Conversation),
|
||||
MessageReceived(Conversation, Message),
|
||||
}
|
||||
|
||||
impl From<UpdateItem> for Event {
|
||||
fn from(update: UpdateItem) -> Self {
|
||||
match update {
|
||||
UpdateItem { conversation: Some(conversation), message: None, .. } => Event::ConversationChanged(conversation),
|
||||
UpdateItem { conversation: Some(conversation), message: Some(message), .. } => Event::MessageReceived(conversation, message),
|
||||
_ => panic!("Invalid update item: {:?}", update),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
pub mod conversation;
|
||||
pub mod event;
|
||||
pub mod message;
|
||||
pub mod update;
|
||||
|
||||
pub use conversation::Conversation;
|
||||
pub use conversation::ConversationID;
|
||||
@@ -7,6 +9,10 @@ pub use conversation::ConversationID;
|
||||
pub use message::Message;
|
||||
pub use message::MessageID;
|
||||
|
||||
pub use update::UpdateItem;
|
||||
|
||||
pub use event::Event;
|
||||
|
||||
pub mod jwt;
|
||||
pub use jwt::JwtToken;
|
||||
|
||||
|
||||
21
kordophone/src/model/update.rs
Normal file
21
kordophone/src/model/update.rs
Normal file
@@ -0,0 +1,21 @@
|
||||
use serde::Deserialize;
|
||||
use super::conversation::Conversation;
|
||||
use super::message::Message;
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
pub struct UpdateItem {
|
||||
#[serde(rename = "messageSequenceNumber")]
|
||||
pub seq: u64,
|
||||
|
||||
#[serde(rename = "conversation")]
|
||||
pub conversation: Option<Conversation>,
|
||||
|
||||
#[serde(rename = "message")]
|
||||
pub message: Option<Message>,
|
||||
}
|
||||
|
||||
impl Default for UpdateItem {
|
||||
fn default() -> Self {
|
||||
Self { seq: 0, conversation: None, message: None }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user