mirror of
https://github.com/chatmail/core.git
synced 2026-05-02 04:46:29 +03:00
move ImageAction parsing to a reusable function
This commit is contained in:
committed by
holger krekel
parent
c3fd0889e2
commit
ab12a4eb39
@@ -190,6 +190,7 @@ impl<'a> MimeParser<'a> {
|
|||||||
self.is_system_message = SystemMessage::LocationStreamingEnabled;
|
self.is_system_message = SystemMessage::LocationStreamingEnabled;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.get(HeaderDef::ChatGroupImage).is_some() && !self.parts.is_empty() {
|
if self.get(HeaderDef::ChatGroupImage).is_some() && !self.parts.is_empty() {
|
||||||
let textpart = &self.parts[0];
|
let textpart = &self.parts[0];
|
||||||
if textpart.typ == Viewtype::Text && self.parts.len() >= 2 {
|
if textpart.typ == Viewtype::Text && self.parts.len() >= 2 {
|
||||||
@@ -200,25 +201,8 @@ impl<'a> MimeParser<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(header_value) = self.get(HeaderDef::ChatProfileImage) {
|
if let Some(header_value) = self.get(HeaderDef::ChatProfileImage).cloned() {
|
||||||
if header_value == "0" {
|
self.profile_image = self.image_action_from_header(header_value);
|
||||||
self.profile_image = ImageAction::Delete;
|
|
||||||
} else {
|
|
||||||
let mut i = 0;
|
|
||||||
while i != self.parts.len() {
|
|
||||||
let part = &self.parts[i];
|
|
||||||
if let Some(part_filename) = &part.org_filename {
|
|
||||||
if part_filename == header_value {
|
|
||||||
if let Some(blob) = part.param.get(Param::File) {
|
|
||||||
self.profile_image = ImageAction::Change(blob.to_string());
|
|
||||||
self.parts.remove(i);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
i += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.has_chat_version() && self.parts.len() == 2 {
|
if self.has_chat_version() && self.parts.len() == 2 {
|
||||||
@@ -352,6 +336,29 @@ impl<'a> MimeParser<'a> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn image_action_from_header(&mut self, header_value: String) -> ImageAction {
|
||||||
|
if header_value == "0" {
|
||||||
|
return ImageAction::Delete;
|
||||||
|
} else {
|
||||||
|
let mut i = 0;
|
||||||
|
while i != self.parts.len() {
|
||||||
|
let part = &mut self.parts[i];
|
||||||
|
if let Some(part_filename) = &part.org_filename {
|
||||||
|
if part_filename == &header_value {
|
||||||
|
if let Some(blob) = part.param.get(Param::File) {
|
||||||
|
let res = ImageAction::Change(blob.to_string());
|
||||||
|
self.parts.remove(i);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImageAction::None
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_last_nonmeta(&self) -> Option<&Part> {
|
pub fn get_last_nonmeta(&self) -> Option<&Part> {
|
||||||
self.parts.iter().rev().find(|part| !part.is_meta)
|
self.parts.iter().rev().find(|part| !part.is_meta)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user