38 lines
1.3 KiB
Rust
38 lines
1.3 KiB
Rust
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<BroadcastMessage>;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct BxRoomEvent<E> {
|
|
pub user: UserEmail,
|
|
pub data: Box<E>,
|
|
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<OriginalSyncRoomMessageEvent>),
|
|
/// New reaction message
|
|
ReactionEvent(BxRoomEvent<OriginalSyncReactionEvent>),
|
|
/// New room redaction
|
|
RoomRedactionEvent(BxRoomEvent<OriginalSyncRoomRedactionEvent>),
|
|
/// Raw Matrix sync response
|
|
MatrixSyncResponse { user: UserEmail, sync: SyncResponse },
|
|
}
|