mirror of
https://gitlab.com/comunic/comunicapiv3
synced 2025-04-20 03:20:54 +00:00
75 lines
2.2 KiB
Rust
75 lines
2.2 KiB
Rust
//! # Events helper
|
|
//!
|
|
//! @author Pierre Hubert
|
|
|
|
|
|
|
|
use crate::controllers::{calls_controller, comments_controller, conversations_controller, notifications_controller, rtc_relay_controller, user_ws_controller};
|
|
use crate::data::api_client::APIClient;
|
|
use crate::data::call_signal::NewUserCallSignal;
|
|
use crate::data::comment::Comment;
|
|
use crate::data::conversation::ConvID;
|
|
use crate::data::conversation_message::ConversationMessage;
|
|
use crate::data::error::Res;
|
|
use crate::data::user::UserID;
|
|
use crate::data::user_ws_connection::UserWsConnection;
|
|
|
|
pub enum Event<'a> {
|
|
/// Websocket of a user was closed
|
|
///
|
|
/// This event is propagated BEFORE the removal of the connection from the list
|
|
UserWsClosed(&'a UserWsConnection),
|
|
|
|
/// Destroyed a login token
|
|
DestroyedLoginToken(UserID, &'a APIClient),
|
|
|
|
/// Updated the number of notifications of one of multiple users user
|
|
UpdatedNotificationsNumber(&'a Vec<UserID>),
|
|
|
|
/// Updated the number of unread conversations
|
|
UpdatedNumberUnreadConversations(&'a Vec<UserID>),
|
|
|
|
/// Created a new conversation message
|
|
NewConversationMessage(&'a ConversationMessage),
|
|
|
|
/// Updated conversation message
|
|
UpdatedConversationMessage(&'a ConversationMessage),
|
|
|
|
/// Deleted a conversation message
|
|
DeleteConversationMessage(&'a ConversationMessage),
|
|
|
|
/// Created a new comment
|
|
NewComment(&'a Comment),
|
|
|
|
/// Updated a comment
|
|
UpdatedComment(&'a Comment),
|
|
|
|
/// Deleted a comment
|
|
DeletedComment(&'a Comment),
|
|
|
|
/// Connection to RTC relay was closed
|
|
ClosedRTCRelayWebSocket,
|
|
|
|
/// User joined call
|
|
UserJoinedCall(&'a ConvID, &'a UserID),
|
|
|
|
/// User left call
|
|
UserLeftCall(&'a ConvID, &'a UserID),
|
|
|
|
/// Got new user call signal
|
|
NewUserCallSignal(&'a NewUserCallSignal),
|
|
|
|
/// No event
|
|
None,
|
|
}
|
|
|
|
/// Propagate an event through the different components of the application
|
|
pub fn propagate_event(e: &Event) -> Res {
|
|
conversations_controller::handle_event(e)?;
|
|
comments_controller::handle_event(e)?;
|
|
notifications_controller::handle_event(e)?;
|
|
user_ws_controller::handle_event(e)?;
|
|
calls_controller::handle_event(e)?;
|
|
rtc_relay_controller::handle_event(e)?;
|
|
Ok(())
|
|
} |