From 4f6745b7429d7f9634fd7aafd791baa5d6f5718b Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Sun, 9 Feb 2020 15:34:14 +0300 Subject: [PATCH] Check if contact is blocked or accepted before downloading it --- src/imap/mod.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/imap/mod.rs b/src/imap/mod.rs index 70d8a0325..127e0b0b5 100644 --- a/src/imap/mod.rs +++ b/src/imap/mod.rs @@ -19,7 +19,9 @@ use mailparse::MailHeaderMap; use crate::config::*; use crate::constants::*; use crate::context::Context; -use crate::dc_receive_imf::{dc_receive_imf, is_msgrmsg_rfc724_mid_in_list}; +use crate::dc_receive_imf::{ + dc_receive_imf, from_field_to_contact_id, is_msgrmsg_rfc724_mid_in_list, +}; use crate::events::Event; use crate::headerdef::HeaderDef; use crate::imap_client::*; @@ -1333,10 +1335,12 @@ fn prefetch_should_download( let is_autocrypt_setup_message = prefetch_has_header(&headers, HeaderDef::AutocryptSetupMessage)?; - // TODO: currently we don't check contacts during prefetch - // We assume the best case: contact is accepted and not blocked. - let accepted_contact = true; - let blocked_contact = false; + let from_field = headers + .get_first_value(&HeaderDef::From_.get_headername())? + .unwrap_or_default(); + + let (_contact_id, blocked_contact, origin) = from_field_to_contact_id(context, &from_field)?; + let accepted_contact = origin.is_known(); let show = is_autocrypt_setup_message || match show_emails {