diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index 9a391f714..43d9ff1e5 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -337,7 +337,7 @@ fn add_parts( } // 1 or 0 for yes/no - msgrmsg = mime_parser.is_send_by_messenger as _; + msgrmsg = mime_parser.has_chat_version() as _; if msgrmsg == 0 && 0 != dc_is_reply_to_messenger_message(context, mime_parser) { // 2=no, but is reply to messenger message msgrmsg = 2; @@ -1112,7 +1112,7 @@ fn create_or_lookup_group( // the only critical situation is if the user hits "Reply" instead // of "Reply all" in a non-messenger-client */ if to_ids_cnt == 1 - && !mime_parser.is_send_by_messenger + && !mime_parser.has_chat_version() && chat::get_chat_contact_cnt(context, chat_id) > 3 { // to_ids_cnt==1 may be "From: A, To: B, SELF" as SELF is not counted in to_ids_cnt. diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 2a43aef44..7447c3275 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -30,7 +30,6 @@ pub struct MimeParser<'a> { pub parts: Vec, pub header: HashMap, pub subject: Option, - pub is_send_by_messenger: bool, pub decrypting_failed: bool, pub encrypted: bool, pub signatures: HashSet, @@ -75,7 +74,6 @@ impl<'a> MimeParser<'a> { parts: Vec::new(), header: Default::default(), subject: None, - is_send_by_messenger: false, decrypting_failed: false, encrypted: false, signatures: Default::default(), @@ -153,10 +151,6 @@ impl<'a> MimeParser<'a> { self.subject = Some(field.clone()); } - if self.lookup_field("Chat-Version").is_some() { - self.is_send_by_messenger = true - } - if self.lookup_field("Autocrypt-Setup-Message").is_some() { let has_setup_file = self.parts.iter().any(|p| { p.mimetype.is_some() && p.mimetype.as_ref().unwrap().as_ref() == MIME_AC_SETUP_FILE @@ -203,7 +197,7 @@ impl<'a> MimeParser<'a> { } } - if self.is_send_by_messenger && self.parts.len() == 2 { + if self.has_chat_version() && self.parts.len() == 2 { let need_drop = { let textpart = &self.parts[0]; let filepart = &self.parts[1]; @@ -237,7 +231,7 @@ impl<'a> MimeParser<'a> { let colon = subject.find(':'); if colon == Some(2) || colon == Some(3) - || self.is_send_by_messenger + || self.has_chat_version() || subject.contains("Chat:") { prepend_subject = 0i32 @@ -323,7 +317,7 @@ impl<'a> MimeParser<'a> { part.typ = Viewtype::Text; if let Some(ref subject) = self.subject { - if !self.is_send_by_messenger { + if !self.has_chat_version() { part.msg = subject.to_string(); } } @@ -342,6 +336,10 @@ impl<'a> MimeParser<'a> { self.parts.iter_mut().rev().find(|part| !part.is_meta) } + pub(crate) fn has_chat_version(&self) -> bool { + self.header.contains_key("chat-version") + } + pub fn lookup_field(&self, field_name: &str) -> Option<&String> { self.header.get(&field_name.to_lowercase()) } @@ -541,15 +539,12 @@ impl<'a> MimeParser<'a> { } }; - // check header directly as is_send_by_messenger is not yet set up - let is_msgrmsg = self.lookup_field("Chat-Version").is_some(); - let mut simplifier = Simplify::new(); let simplified_txt = if decoded_data.is_empty() { "".into() } else { let is_html = mime_type == mime::TEXT_HTML; - simplifier.simplify(&decoded_data, is_html, is_msgrmsg) + simplifier.simplify(&decoded_data, is_html, self.has_chat_version()) }; if !simplified_txt.is_empty() { @@ -766,11 +761,11 @@ impl<'a> MimeParser<'a> { mdn_consumed = true; } - if self.is_send_by_messenger || mdn_consumed { + if self.has_chat_version() || mdn_consumed { let mut param = Params::new(); param.set(Param::ServerFolder, server_folder.as_ref()); param.set_int(Param::ServerUid, server_uid as i32); - if self.is_send_by_messenger && self.context.get_config_bool(Config::MvboxMove) { + if self.has_chat_version() && self.context.get_config_bool(Config::MvboxMove) { param.set_int(Param::AlsoMove, 1); } job_add(self.context, Action::MarkseenMdnOnImap, 0, param, 0);