aboutsummaryrefslogtreecommitdiff
path: root/src/imap/mailbox_view.rs
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2024-01-05 15:26:57 +0100
committerQuentin Dufour <quentin@deuxfleurs.fr>2024-01-05 15:26:57 +0100
commitd3c156a087f3c767fc0d2376abd7c1d304161d47 (patch)
tree0c95d813be4fad70c839b81794889b327142f2a7 /src/imap/mailbox_view.rs
parent35591ff0608096b32d7bab22d719a6ceb8574c2c (diff)
downloadaerogramme-d3c156a087f3c767fc0d2376abd7c1d304161d47.tar.gz
aerogramme-d3c156a087f3c767fc0d2376abd7c1d304161d47.zip
Select what to fecth for search
Diffstat (limited to 'src/imap/mailbox_view.rs')
-rw-r--r--src/imap/mailbox_view.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/imap/mailbox_view.rs b/src/imap/mailbox_view.rs
index 5311635..4d0858f 100644
--- a/src/imap/mailbox_view.rs
+++ b/src/imap/mailbox_view.rs
@@ -344,12 +344,19 @@ impl MailboxView {
search_key: &SearchKey<'a>,
uid: bool,
) -> Result<Vec<Body<'static>>> {
- let (seq_set, seq_type) = search::Criteria(search_key).to_sequence_set();
+ // 1. Compute the subset of sequence identifiers we need to fetch
+ let query = search::Criteria(search_key);
+ let (seq_set, seq_type) = query.to_sequence_set();
let mailids = MailIdentifiersList(self.get_mail_ids(&seq_set, seq_type.is_uid())?);
let mail_u32 = match uid {
true => mailids.uids(),
_ => mailids.ids(),
};
+
+ // 2. Compute wether we will need to fetch the mail meta and/or the body
+ let _need_meta = query.need_meta();
+ let _need_body = query.need_body();
+
Ok(vec![Body::Data(Data::Search(mail_u32))])
}