use crate::enums::msnp_list::MsnpList;
use crate::models::personal_message::PersonalMessage;
use crate::models::plain_text::PlainText;
use crate::models::presence::Presence;
use crate::switchboard_server::switchboard::Switchboard;
use std::sync::Arc;
#[derive(Debug, Clone)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
pub enum Event {
RedirectedTo { server: String, port: u16 },
Authenticated,
Gtc(String),
Blp(String),
DisplayName(String),
Group { name: String, guid: String },
Contact {
email: String,
display_name: String,
lists: Vec<MsnpList>,
},
ContactInForwardList {
email: String,
display_name: String,
guid: String,
lists: Vec<MsnpList>,
groups: Vec<String>,
},
InitialPresenceUpdate {
email: String,
display_name: String,
presence: Presence,
},
PresenceUpdate {
email: String,
display_name: String,
presence: Presence,
},
PersonalMessageUpdate {
email: String,
personal_message: PersonalMessage,
},
ContactOffline { email: String },
AddedBy { email: String, display_name: String },
RemovedBy(String),
SessionAnswered(Arc<Switchboard>),
TextMessage { email: String, message: PlainText },
Nudge { email: String },
TypingNotification { email: String },
ParticipantInSwitchboard { email: String },
ParticipantLeftSwitchboard { email: String },
DisplayPicture { email: String, data: Vec<u8> },
ServerMaintenanceScheduled { time_remaining: u32 },
LoggedInAnotherDevice,
Disconnected,
}