use maildirs::Maildir;
use crate::{
account::config::AccountConfig,
folder::{Folder, Folders},
maildir::MaildirContext,
};
use super::Result;
impl Folders {
pub fn from_maildir_context(ctx: &MaildirContext) -> Self {
Folders::from_iter(ctx.root.iter().map(|entry| {
Folder {
kind: ctx
.account_config
.find_folder_kind_from_alias(&entry.name)
.or_else(|| entry.name.parse().ok()),
name: entry.name,
desc: entry.maildir.path().display().to_string(),
}
}))
}
}
impl Folder {
pub fn try_from_maildir(config: &AccountConfig, mdir: Maildir) -> Result<Self> {
let name = mdir.name()?.to_owned();
let kind = config
.find_folder_kind_from_alias(&name)
.or_else(|| name.parse().ok());
let desc = mdir.path().display().to_string();
Ok(Folder { kind, name, desc })
}
}