use crate::matrix_connection::sync_thread::MatrixSyncTaskID; use crate::users::{APIToken, UserEmail}; use matrix_sdk::Room; use matrix_sdk::ruma::events::reaction::OriginalSyncReactionEvent; use matrix_sdk::ruma::events::room::message::OriginalSyncRoomMessageEvent; use matrix_sdk::ruma::events::room::redaction::OriginalSyncRoomRedactionEvent; use matrix_sdk::sync::SyncResponse; pub type BroadcastSender = tokio::sync::broadcast::Sender; #[derive(Debug, Clone)] pub struct BxRoomEvent { pub user: UserEmail, pub data: Box, pub room: Room, } /// Broadcast messages #[derive(Debug, Clone)] pub enum BroadcastMessage { /// User is or has been disconnected from Matrix UserDisconnectedFromMatrix(UserEmail), /// API token has been deleted APITokenDeleted(APIToken), /// Request a Matrix sync thread to be interrupted StopSyncThread(MatrixSyncTaskID), /// Matrix sync thread has been interrupted SyncThreadStopped(MatrixSyncTaskID), /// New room message RoomMessageEvent(BxRoomEvent), /// New reaction message ReactionEvent(BxRoomEvent), /// New room redaction RoomRedactionEvent(BxRoomEvent), /// Raw Matrix sync response MatrixSyncResponse { user: UserEmail, sync: SyncResponse }, }