melib/email: add flags arg to Mail::new

memfd
Manos Pitsidianakis 2020-09-09 22:51:55 +03:00
parent d57dd9c98e
commit be57b65dae
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
4 changed files with 22 additions and 17 deletions

View File

@ -94,9 +94,9 @@ impl Deref for Mail {
}
impl Mail {
pub fn new(bytes: Vec<u8>) -> Result<Self> {
pub fn new(bytes: Vec<u8>, flags: Option<Flag>) -> Result<Self> {
Ok(Mail {
envelope: Envelope::from_bytes(&bytes, None)?,
envelope: Envelope::from_bytes(&bytes, flags)?,
bytes,
})
}

View File

@ -362,7 +362,7 @@ impl fmt::Display for Attachment {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self.content_type {
ContentType::MessageRfc822 => {
match Mail::new(self.body.display_bytes(&self.raw).to_vec()) {
match Mail::new(self.body.display_bytes(&self.raw).to_vec(), None) {
Ok(wrapper) => write!(
f,
"message/rfc822: {} - {} - {}",

View File

@ -309,7 +309,7 @@ fn run_app(opt: Opt) -> Result<()> {
if let Some(SubCommand::View { path }) = opt.subcommand {
let bytes = std::fs::read(&path)
.chain_err_summary(|| format!("Could not read from `{}`", path.display()))?;
let wrapper = Mail::new(bytes)
let wrapper = Mail::new(bytes, Some(Flag::SEEN))
.chain_err_summary(|| format!("Could not parse `{}`", path.display()))?;
state = State::new(
Some(Settings::without_accounts().unwrap_or_default()),

View File

@ -481,20 +481,25 @@ impl MailView {
}
} else {
match u.content_type() {
ContentType::MessageRfc822 => match Mail::new(u.body().to_vec()) {
Ok(wrapper) => {
context
.replies
.push_back(UIEvent::Action(Tab(New(Some(Box::new(
EnvelopeView::new(wrapper, None, None, self.coordinates.0),
))))));
ContentType::MessageRfc822 => {
match Mail::new(u.body().to_vec(), Some(Flag::SEEN)) {
Ok(wrapper) => {
context.replies.push_back(UIEvent::Action(Tab(New(Some(
Box::new(EnvelopeView::new(
wrapper,
None,
None,
self.coordinates.0,
)),
)))));
}
Err(e) => {
context.replies.push_back(UIEvent::StatusEvent(
StatusEvent::DisplayMessage(format!("{}", e)),
));
}
}
Err(e) => {
context.replies.push_back(UIEvent::StatusEvent(
StatusEvent::DisplayMessage(format!("{}", e)),
));
}
},
}
ContentType::Text { .. } | ContentType::PGPSignature => {
self.mode = ViewMode::Attachment(lidx);