diff --git a/src/headerdef.rs b/src/headerdef.rs index 32eb51e91..54ff2cfcd 100644 --- a/src/headerdef.rs +++ b/src/headerdef.rs @@ -19,6 +19,7 @@ pub enum HeaderDef { ChatGroupName, ChatGroupNameChanged, ChatVerified, + ChatGroupImage, // deprecated ChatGroupAvatar, ChatUserAvatar, ChatVoiceMessage, diff --git a/src/mimefactory.rs b/src/mimefactory.rs index 4705224c5..91641bc78 100644 --- a/src/mimefactory.rs +++ b/src/mimefactory.rs @@ -637,6 +637,7 @@ impl<'a, 'b> MimeFactory<'a, 'b> { let command = self.msg.param.get_cmd(); let mut placeholdertext = None; let mut meta_part = None; + let mut add_compatibility_header = false; if chat.typ == Chattype::VerifiedGroup { protected_headers.push(Header::new("Chat-Verified".to_string(), "1".to_string())); @@ -677,6 +678,7 @@ impl<'a, 'b> MimeFactory<'a, 'b> { "vg-member-added".to_string(), )); } + add_compatibility_header = true; } SystemMessage::GroupNameChanged => { let value_to_add = self.msg.param.get(Param::Arg).unwrap_or_default(); @@ -691,6 +693,7 @@ impl<'a, 'b> MimeFactory<'a, 'b> { "Chat-Content".to_string(), "group-avatar-changed".to_string(), )); + add_compatibility_header = true; } _ => {} } @@ -758,7 +761,18 @@ impl<'a, 'b> MimeFactory<'a, 'b> { let (mail, filename_as_sent) = build_body_file(context, &meta, "group-image")?; meta_part = Some(mail); - protected_headers.push(Header::new("Chat-Group-Avatar".into(), filename_as_sent)); + protected_headers.push(Header::new( + "Chat-Group-Avatar".into(), + filename_as_sent.clone(), + )); + + // add the old group-image headers for versions <=0.973 resp. <=beta.15 (december 2019) + // image deletion is not supported in the compatibility layer. + // this can be removed some time after releasing 1.0, + // grep for #DeprecatedAvatar to get the place where compatibility parsing takes place. + if add_compatibility_header { + protected_headers.push(Header::new("Chat-Group-Image".into(), filename_as_sent)); + } } if self.msg.type_0 == Viewtype::Sticker { diff --git a/src/mimeparser.rs b/src/mimeparser.rs index a9cb7578e..02541c680 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -195,6 +195,10 @@ impl<'a> MimeParser<'a> { if let Some(header_value) = self.get(HeaderDef::ChatGroupAvatar).cloned() { self.group_avatar = self.avatar_action_from_header(header_value); + } else if let Some(header_value) = self.get(HeaderDef::ChatGroupImage).cloned() { + // parse the old group-image headers for versions <=0.973 resp. <=beta.15 (december 2019) + // grep for #DeprecatedAvatar to get the place where a compatibility header is generated. + self.group_avatar = self.avatar_action_from_header(header_value); } if let Some(header_value) = self.get(HeaderDef::ChatUserAvatar).cloned() {