mirror of
https://github.com/chatmail/core.git
synced 2026-05-07 17:06:35 +03:00
remove subject attribute
This commit is contained in:
@@ -604,8 +604,9 @@ fn add_parts(
|
|||||||
bytes, hidden, mime_headers, mime_in_reply_to, mime_references) \
|
bytes, hidden, mime_headers, mime_in_reply_to, mime_references) \
|
||||||
VALUES (?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?);",
|
VALUES (?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?);",
|
||||||
|mut stmt, conn| {
|
|mut stmt, conn| {
|
||||||
for i in 0..icnt {
|
let subject = mime_parser.get_subject().unwrap_or_default();
|
||||||
let part = &mut mime_parser.parts[i];
|
|
||||||
|
for part in mime_parser.parts.iter_mut() {
|
||||||
if part.is_meta {
|
if part.is_meta {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -622,11 +623,6 @@ fn add_parts(
|
|||||||
|
|
||||||
if part.typ == Viewtype::Text {
|
if part.typ == Viewtype::Text {
|
||||||
let msg_raw = part.msg_raw.as_ref().cloned().unwrap_or_default();
|
let msg_raw = part.msg_raw.as_ref().cloned().unwrap_or_default();
|
||||||
let subject = mime_parser
|
|
||||||
.subject
|
|
||||||
.as_ref()
|
|
||||||
.map(|s| s.to_string())
|
|
||||||
.unwrap_or_else(|| "".into());
|
|
||||||
txt_raw = Some(format!("{}\n\n{}", subject, msg_raw));
|
txt_raw = Some(format!("{}\n\n{}", subject, msg_raw));
|
||||||
}
|
}
|
||||||
if mime_parser.is_system_message != SystemMessage::Unknown {
|
if mime_parser.is_system_message != SystemMessage::Unknown {
|
||||||
@@ -1223,11 +1219,9 @@ fn create_or_lookup_adhoc_group(
|
|||||||
return Ok((0, Blocked::Not));
|
return Ok((0, Blocked::Not));
|
||||||
}
|
}
|
||||||
// use subject as initial chat name
|
// use subject as initial chat name
|
||||||
let grpname = if let Some(subject) = mime_parser.subject.as_ref().filter(|s| !s.is_empty()) {
|
let grpname = mime_parser.get_subject().unwrap_or_else(|| {
|
||||||
subject.to_string()
|
|
||||||
} else {
|
|
||||||
context.stock_string_repl_int(StockMessage::Member, member_ids.len() as i32)
|
context.stock_string_repl_int(StockMessage::Member, member_ids.len() as i32)
|
||||||
};
|
});
|
||||||
|
|
||||||
// create group record
|
// create group record
|
||||||
let new_chat_id = create_group_record(
|
let new_chat_id = create_group_record(
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ pub struct MimeParser<'a> {
|
|||||||
pub context: &'a Context,
|
pub context: &'a Context,
|
||||||
pub parts: Vec<Part>,
|
pub parts: Vec<Part>,
|
||||||
pub header: HashMap<String, String>,
|
pub header: HashMap<String, String>,
|
||||||
pub subject: Option<String>,
|
|
||||||
pub decrypting_failed: bool,
|
pub decrypting_failed: bool,
|
||||||
pub encrypted: bool,
|
pub encrypted: bool,
|
||||||
pub signatures: HashSet<String>,
|
pub signatures: HashSet<String>,
|
||||||
@@ -73,7 +72,6 @@ impl<'a> MimeParser<'a> {
|
|||||||
let mut parser = MimeParser {
|
let mut parser = MimeParser {
|
||||||
parts: Vec::new(),
|
parts: Vec::new(),
|
||||||
header: Default::default(),
|
header: Default::default(),
|
||||||
subject: None,
|
|
||||||
decrypting_failed: false,
|
decrypting_failed: false,
|
||||||
encrypted: false,
|
encrypted: false,
|
||||||
signatures: Default::default(),
|
signatures: Default::default(),
|
||||||
@@ -147,10 +145,6 @@ impl<'a> MimeParser<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn parse_headers(&mut self) -> Result<()> {
|
fn parse_headers(&mut self) -> Result<()> {
|
||||||
if let Some(field) = self.lookup_field("Subject") {
|
|
||||||
self.subject = Some(field.clone());
|
|
||||||
}
|
|
||||||
|
|
||||||
if self.lookup_field("Autocrypt-Setup-Message").is_some() {
|
if self.lookup_field("Autocrypt-Setup-Message").is_some() {
|
||||||
let has_setup_file = self.parts.iter().any(|p| {
|
let has_setup_file = self.parts.iter().any(|p| {
|
||||||
p.mimetype.is_some() && p.mimetype.as_ref().unwrap().as_ref() == MIME_AC_SETUP_FILE
|
p.mimetype.is_some() && p.mimetype.as_ref().unwrap().as_ref() == MIME_AC_SETUP_FILE
|
||||||
@@ -225,7 +219,7 @@ impl<'a> MimeParser<'a> {
|
|||||||
std::mem::replace(&mut self.parts[0], filepart);
|
std::mem::replace(&mut self.parts[0], filepart);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let Some(ref subject) = self.subject {
|
if let Some(ref subject) = self.get_subject() {
|
||||||
let mut prepend_subject = 1i32;
|
let mut prepend_subject = 1i32;
|
||||||
if !self.decrypting_failed {
|
if !self.decrypting_failed {
|
||||||
let colon = subject.find(':');
|
let colon = subject.find(':');
|
||||||
@@ -316,7 +310,7 @@ impl<'a> MimeParser<'a> {
|
|||||||
let mut part = Part::default();
|
let mut part = Part::default();
|
||||||
part.typ = Viewtype::Text;
|
part.typ = Viewtype::Text;
|
||||||
|
|
||||||
if let Some(ref subject) = self.subject {
|
if let Some(ref subject) = self.get_subject() {
|
||||||
if !self.has_chat_version() {
|
if !self.has_chat_version() {
|
||||||
part.msg = subject.to_string();
|
part.msg = subject.to_string();
|
||||||
}
|
}
|
||||||
@@ -340,6 +334,17 @@ impl<'a> MimeParser<'a> {
|
|||||||
self.header.contains_key("chat-version")
|
self.header.contains_key("chat-version")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn get_subject(&self) -> Option<String> {
|
||||||
|
if let Some(s) = self.header.get("subject") {
|
||||||
|
if s.is_empty() {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
Some(s.to_string())
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn lookup_field(&self, field_name: &str) -> Option<&String> {
|
pub fn lookup_field(&self, field_name: &str) -> Option<&String> {
|
||||||
self.header.get(&field_name.to_lowercase())
|
self.header.get(&field_name.to_lowercase())
|
||||||
}
|
}
|
||||||
@@ -1016,7 +1021,7 @@ mod tests {
|
|||||||
let raw = include_bytes!("../test-data/message/issue_523.txt");
|
let raw = include_bytes!("../test-data/message/issue_523.txt");
|
||||||
let mimeparser = MimeParser::from_bytes(&context.ctx, &raw[..]).unwrap();
|
let mimeparser = MimeParser::from_bytes(&context.ctx, &raw[..]).unwrap();
|
||||||
|
|
||||||
assert_eq!(mimeparser.subject, None);
|
assert_eq!(mimeparser.get_subject(), None);
|
||||||
assert_eq!(mimeparser.parts.len(), 1);
|
assert_eq!(mimeparser.parts.len(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1121,7 +1126,7 @@ mod tests {
|
|||||||
\x00";
|
\x00";
|
||||||
let mimeparser = MimeParser::from_bytes(&context.ctx, &raw[..]).unwrap();
|
let mimeparser = MimeParser::from_bytes(&context.ctx, &raw[..]).unwrap();
|
||||||
|
|
||||||
assert_eq!(mimeparser.subject, Some("inner-subject".into()));
|
assert_eq!(mimeparser.get_subject(), Some("inner-subject".into()));
|
||||||
|
|
||||||
let of = mimeparser.lookup_field("X-Special-A").unwrap();
|
let of = mimeparser.lookup_field("X-Special-A").unwrap();
|
||||||
assert_eq!(of, "special-a");
|
assert_eq!(of, "special-a");
|
||||||
|
|||||||
Reference in New Issue
Block a user