Private
Public Access
1
0

websocket: automatically reconnect if not heard from for a while

This commit is contained in:
2025-05-14 17:39:23 -07:00
parent 4ad9613827
commit 83eb97fd9c
5 changed files with 80 additions and 23 deletions

View File

@@ -1,7 +1,13 @@
use crate::model::{Conversation, Message, UpdateItem};
#[derive(Debug, Clone)]
pub enum Event {
pub struct Event {
pub data: EventData,
pub update_seq: u64,
}
#[derive(Debug, Clone)]
pub enum EventData {
ConversationChanged(Conversation),
MessageReceived(Conversation, Message),
}
@@ -9,8 +15,12 @@ pub enum Event {
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),
UpdateItem { conversation: Some(conversation), message: None, .. }
=> Event { data: EventData::ConversationChanged(conversation), update_seq: update.seq },
UpdateItem { conversation: Some(conversation), message: Some(message), .. }
=> Event { data: EventData::MessageReceived(conversation, message), update_seq: update.seq },
_ => panic!("Invalid update item: {:?}", update),
}
}