✨ feat(message): add label support to message listing
- add ability to filter messages by labels - enhance message listing functionality
This commit is contained in:
committed by
Jeremiah Russell
parent
bdb3a9e457
commit
ca06e9290f
@@ -1,5 +1,5 @@
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use cull_gmail::{Error, Labels, MessageList};
|
use cull_gmail::{MessageList, Result};
|
||||||
|
|
||||||
/// Command line options for the list subcommand
|
/// Command line options for the list subcommand
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
@@ -19,22 +19,11 @@ pub struct MessageCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl MessageCli {
|
impl MessageCli {
|
||||||
pub(crate) async fn run(&self, credential_file: &str) -> Result<(), Error> {
|
pub(crate) async fn run(&self, credential_file: &str) -> Result<()> {
|
||||||
let mut list = MessageList::new(credential_file).await?;
|
let mut list = MessageList::new(credential_file).await?;
|
||||||
|
|
||||||
if !self.labels.is_empty() {
|
if !self.labels.is_empty() {
|
||||||
// add labels if any specified
|
list.add_labels(credential_file, &self.labels).await?;
|
||||||
let label_list = Labels::new(credential_file, false).await?;
|
|
||||||
|
|
||||||
log::trace!("labels found and setup {label_list:#?}");
|
|
||||||
log::debug!("labels from command line: {:?}", self.labels);
|
|
||||||
let mut label_ids = Vec::new();
|
|
||||||
for label in &self.labels {
|
|
||||||
if let Some(id) = label_list.get_label_id(label) {
|
|
||||||
label_ids.push(id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
list.add_labels(label_ids.as_slice());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(query) = self.query.as_ref() {
|
if let Some(query) = self.query.as_ref() {
|
||||||
|
|||||||
Reference in New Issue
Block a user