diff --git a/src/cli/message_cli.rs b/src/cli/message_cli.rs index a203598..0bdf633 100644 --- a/src/cli/message_cli.rs +++ b/src/cli/message_cli.rs @@ -43,7 +43,7 @@ impl MessageCli { match self.action { MessageAction::List => { if log::max_level() >= log::Level::Info { - client.log_message_subjects().await + client.log_messages().await } else { Ok(()) } diff --git a/src/gmail_client/message_summary.rs b/src/gmail_client/message_summary.rs index 054c5ea..20400b2 100644 --- a/src/gmail_client/message_summary.rs +++ b/src/gmail_client/message_summary.rs @@ -1,3 +1,5 @@ +use crate::utils::Elide; + #[derive(Debug, Clone)] pub struct MessageSummary { id: String, @@ -18,8 +20,8 @@ impl MessageSummary { &self.id } - pub(crate) fn set_subject(&mut self, subject: &str) { - self.subject = Some(subject.to_string()) + pub(crate) fn set_subject(&mut self, subject: Option) { + self.subject = subject } pub(crate) fn subject(&self) -> &str { @@ -30,8 +32,8 @@ impl MessageSummary { } } - pub(crate) fn set_date(&mut self, date: &str) { - self.date = Some(date.to_string()) + pub(crate) fn set_date(&mut self, date: Option) { + self.date = date } pub(crate) fn date(&self) -> &str { @@ -51,7 +53,7 @@ impl MessageSummary { return "***invalid date or subject***".to_string(); }; let s = date[5..16].to_string(); - let s = format!("{s}: {subject}"); + let s = format!("{s}: {}", subject.to_string().elide(24)); s } } diff --git a/src/message_list.rs b/src/message_list.rs index f979c3b..a212152 100644 --- a/src/message_list.rs +++ b/src/message_list.rs @@ -5,12 +5,10 @@ use google_gmail1::{ hyper_util::client::legacy::connect::HttpConnector, }; -use crate::utils::Elide; - /// Methods to select lists of messages from the mailbox pub trait MessageList { /// Log the initial characters of the subjects of the message in the list - fn log_message_subjects(&mut self) -> impl std::future::Future> + Send; + fn log_messages(&mut self) -> impl std::future::Future> + Send; /// List of messages fn messages_list( &mut self, @@ -195,7 +193,7 @@ impl MessageList for GmailClient { Ok(list) } - async fn log_message_subjects(&mut self) -> Result<()> { + async fn log_messages(&mut self) -> Result<()> { let hub = self.hub(); for message in &mut self.messages { log::trace!("{}", message.id()); @@ -210,8 +208,6 @@ impl MessageList for GmailClient { .await .map_err(Box::new)?; - let mut subject = String::new(); - let mut date = String::new(); let Some(payload) = m.payload else { continue }; let Some(headers) = payload.headers else { continue; @@ -220,8 +216,8 @@ impl MessageList for GmailClient { for header in headers { if let Some(name) = header.name { match name.to_lowercase().as_str() { - "subject" => subject = header.value.unwrap_or_default(), - "date" => date = header.value.unwrap_or_default(), + "subject" => message.set_subject(header.value), + "date" => message.set_date(header.value), _ => {} } } else { @@ -229,19 +225,6 @@ impl MessageList for GmailClient { } } - if date.is_empty() { - log::info!("***No orig-date field***"); - } else { - message.set_date(&date); - } - - if subject.is_empty() { - log::info!("***Email with no subject***"); - } else { - subject.elide(24); - message.set_subject(&subject); - } - log::info!("{}", message.list_date_and_subject()); }