From 9931658ea336dea864d8f9e3f5071514d6f2a60b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Sun, 19 Sep 2021 17:21:42 +0200 Subject: [PATCH] review template, write and search commands --- src/domain/msg/handler.rs | 4 ++++ src/domain/msg/tpl/handler.rs | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/domain/msg/handler.rs b/src/domain/msg/handler.rs index 555191a..99cf256 100644 --- a/src/domain/msg/handler.rs +++ b/src/domain/msg/handler.rs @@ -354,6 +354,7 @@ pub fn reply< Ok(()) } +/// Save a raw message to the targetted mailbox. pub fn save( mbox: Option<&str>, msg: &str, @@ -367,6 +368,7 @@ pub fn save( Ok(()) } +/// Search messages from the given IMAP query. pub fn search( page_size: Option, page: usize, @@ -388,6 +390,7 @@ pub fn search(msg: &mut Msg, tpl: Tpl<'a>) { Some(from) => from.map(|arg| arg.to_string()).collect(), None => msg.headers.from.clone(), }; - let to: Vec = match tpl.to { Some(to) => to.map(|arg| arg.to_string()).collect(), None => Vec::new(), }; - - let subject = tpl.subject.map(String::from); - let cc: Option> = tpl.cc.map(|cc| cc.map(|arg| arg.to_string()).collect()); - let bcc: Option> = tpl.bcc.map(|bcc| bcc.map(|arg| arg.to_string()).collect()); + let subject = tpl + .subject + .map(String::from) + .or_else(|| msg.headers.subject.clone()) + .or_else(|| Some(String::new())); + let cc: Option> = tpl + .cc + .map(|cc| cc.map(|arg| arg.to_string()).collect()) + .or_else(|| msg.headers.cc.clone()); + let bcc: Option> = tpl + .bcc + .map(|bcc| bcc.map(|arg| arg.to_string()).collect()) + .or_else(|| msg.headers.bcc.clone()); let custom_headers: Option>> = { if let Some(matched_headers) = tpl.headers {