mailboxlib/enums/
imap_folder.rsuse std::fmt;
use std::fmt::Formatter;
use serde::{Deserialize, Serialize};
use strum_macros::EnumString;
use crate::enums::account_type::AccountType;
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize,EnumString)]
pub enum ImapFolder {
INBOX,
DRAFTS,
SENT,
TRASH,
JUNK,
STARRED,
Eror,
}
impl fmt::Display for ImapFolder {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "{:?}", self)
}
}
impl ImapFolder {
pub fn to_folder(&self, account_type: AccountType)->&str {
match account_type {
AccountType::Gmail => {
match self {
ImapFolder::INBOX => "INBOX",
ImapFolder::DRAFTS => "[Gmail]/Drafts",
ImapFolder::SENT => "[Gmail]/Sent Mail",
ImapFolder::TRASH => "[Gmail]/Trash",
ImapFolder::JUNK => "[Gmail]/Spam",
ImapFolder::STARRED => "[Gmail]/Starred",
_ => "eror",
}
},
AccountType::Other => {
match self {
ImapFolder::INBOX => "INBOX",
ImapFolder::DRAFTS => "Drafts",
ImapFolder::SENT => "Sent",
ImapFolder::TRASH => "Trash",
ImapFolder::JUNK => "Spam",
ImapFolder::STARRED => "Important",
_ => "eror",
}
},
_ => "eror",
}
}
pub fn from_str(str : &str)->ImapFolder{
match str {
"inbox" => ImapFolder::INBOX,
"drafts" => ImapFolder::DRAFTS,
"sent" => ImapFolder::SENT,
"trash" => ImapFolder::TRASH,
"starred" => ImapFolder::STARRED,
"junk" => ImapFolder::JUNK,
&_ => ImapFolder::Eror,
}
}
}