#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum MailboxFilter {
Selected,
SelectedDelayed,
Inboxes,
Personal,
Subscribed,
Subtree(Vec<String>),
Mailboxes(Vec<String>),
}
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum NotifyEvent {
MessageNew {
fetch_attrs: Vec<String>,
},
MessageExpunge,
FlagChange,
AnnotationChange,
MailboxName,
SubscriptionChange,
MailboxMetadataChange,
ServerMetadataChange,
Other(String),
}
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct NotifyEventGroup {
pub filter: MailboxFilter,
pub events: Vec<NotifyEvent>,
}
impl NotifyEventGroup {
pub fn new(filter: MailboxFilter, events: Vec<NotifyEvent>) -> Self {
Self { filter, events }
}
}
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct NotifySetParams {
pub status: bool,
pub event_groups: Vec<NotifyEventGroup>,
}
impl NotifySetParams {
pub fn new(event_groups: Vec<NotifyEventGroup>, status: bool) -> Self {
Self {
status,
event_groups,
}
}
}