diff --git a/meli/src/mail/listing.rs b/meli/src/mail/listing.rs index ee156da4..58df6abe 100644 --- a/meli/src/mail/listing.rs +++ b/meli/src/mail/listing.rs @@ -701,7 +701,11 @@ pub trait MailListingTrait: ListingTrait { account.operation(env_hash).and_then(|mut op| op.as_bytes()) }) .collect::>>(); - let mut path_ = path.to_path_buf(); + let mut path = path.to_path_buf(); + if path.is_relative() { + path = context.current_dir().join(&path); + } + let account = &mut context.accounts[&account_hash]; let format = (*format).unwrap_or_default(); let collection = account.collection.clone(); let (sender, mut receiver) = crate::jobs::oneshot::channel(); @@ -715,16 +719,16 @@ pub trait MailListingTrait: ListingTrait { .iter() .map(|&env_hash| collection.get_env(env_hash)) .collect(); - if path_.is_dir() { + if path.is_dir() { if envs.len() == 1 { - path_.push(format!("{}.mbox", envs[0].message_id_raw())); + path.push(format!("{}.mbox", envs[0].message_id_raw())); } else { let now = datetime::timestamp_to_string( datetime::now(), Some(datetime::formats::RFC3339_DATETIME), false, ); - path_.push(format!( + path.push(format!( "{}-{}-{}_envelopes.mbox", now, envs[0].message_id_raw(), @@ -732,7 +736,7 @@ pub trait MailListingTrait: ListingTrait { )); } } - let mut file = BufWriter::new(File::create(&path_)?); + let mut file = BufWriter::new(File::create(&path)?); let mut iter = envs.iter().zip(bytes); let tags_lck = collection.tag_index.read().unwrap(); if let Some((env, ref bytes)) = iter.next() { @@ -770,7 +774,7 @@ pub trait MailListingTrait: ListingTrait { )?; } file.flush()?; - Ok(path_) + Ok(path) }; let r: Result = cl.await; let _ = sender.send(r); diff --git a/meli/src/mail/view/envelope.rs b/meli/src/mail/view/envelope.rs index e8edc532..61265fee 100644 --- a/meli/src/mail/view/envelope.rs +++ b/meli/src/mail/view/envelope.rs @@ -1361,6 +1361,9 @@ impl Component for EnvelopeView { if path.is_dir() { path.push(format!("{}.eml", self.mail.message_id_raw())); } + if path.is_relative() { + path = context.current_dir().join(&path); + } match save_attachment(&path, &self.mail.bytes) { Err(err) => { context.replies.push_back(UIEvent::Notification( @@ -1396,6 +1399,9 @@ impl Component for EnvelopeView { )); } } + if path.is_relative() { + path = context.current_dir().join(&path); + } match save_attachment(&path, &u.decode(Default::default())) { Err(err) => { context.replies.push_back(UIEvent::Notification( @@ -1418,6 +1424,9 @@ impl Component for EnvelopeView { if path.is_dir() { path.push(format!("{}.eml", self.mail.message_id_raw())); } + if path.is_relative() { + path = context.current_dir().join(&path); + } match save_attachment(&path, &self.mail.bytes) { Err(err) => { context.replies.push_back(UIEvent::Notification(