mirror of
https://github.com/chatmail/core.git
synced 2026-05-09 01:46:30 +03:00
Return &str from extract_grpid
This commit is contained in:
committed by
holger krekel
parent
c7b2bdfaac
commit
ee4adc1363
@@ -787,10 +787,10 @@ fn create_or_lookup_group(
|
|||||||
}
|
}
|
||||||
if grpid.is_empty() {
|
if grpid.is_empty() {
|
||||||
if let Some(extracted_grpid) = extract_grpid(mime_parser, HeaderDef::InReplyTo) {
|
if let Some(extracted_grpid) = extract_grpid(mime_parser, HeaderDef::InReplyTo) {
|
||||||
grpid = extracted_grpid;
|
grpid = extracted_grpid.to_string();
|
||||||
} else if let Some(extracted_grpid) = extract_grpid(mime_parser, HeaderDef::References)
|
} else if let Some(extracted_grpid) = extract_grpid(mime_parser, HeaderDef::References)
|
||||||
{
|
{
|
||||||
grpid = extracted_grpid;
|
grpid = extracted_grpid.to_string();
|
||||||
} else {
|
} else {
|
||||||
return create_or_lookup_adhoc_group(
|
return create_or_lookup_adhoc_group(
|
||||||
context,
|
context,
|
||||||
@@ -1058,17 +1058,13 @@ fn create_or_lookup_group(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// try extract a grpid from a message-id list header value
|
/// try extract a grpid from a message-id list header value
|
||||||
fn extract_grpid(mime_parser: &MimeMessage, headerdef: HeaderDef) -> Option<String> {
|
fn extract_grpid<'a>(mime_parser: &'a MimeMessage, headerdef: HeaderDef) -> Option<&'a str> {
|
||||||
if let Some(value) = mime_parser.get(headerdef) {
|
let header = mime_parser.get(headerdef)?;
|
||||||
for part in value.split(',').map(str::trim) {
|
let parts = header
|
||||||
if !part.is_empty() {
|
.split(',')
|
||||||
if let Some(extracted_grpid) = dc_extract_grpid_from_rfc724_mid(part) {
|
.map(str::trim)
|
||||||
return Some(extracted_grpid.to_string());
|
.filter(|part| !part.is_empty());
|
||||||
}
|
parts.filter_map(dc_extract_grpid_from_rfc724_mid).next()
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handle groups for received messages, return chat_id/Blocked status on success
|
/// Handle groups for received messages, return chat_id/Blocked status on success
|
||||||
@@ -1624,7 +1620,7 @@ mod tests {
|
|||||||
hello\x00";
|
hello\x00";
|
||||||
let mimeparser = MimeMessage::from_bytes(&context.ctx, &raw[..]).unwrap();
|
let mimeparser = MimeMessage::from_bytes(&context.ctx, &raw[..]).unwrap();
|
||||||
assert_eq!(extract_grpid(&mimeparser, HeaderDef::InReplyTo), None);
|
assert_eq!(extract_grpid(&mimeparser, HeaderDef::InReplyTo), None);
|
||||||
let grpid = Some("HcxyMARjyJy".to_string());
|
let grpid = Some("HcxyMARjyJy");
|
||||||
assert_eq!(extract_grpid(&mimeparser, HeaderDef::References), grpid);
|
assert_eq!(extract_grpid(&mimeparser, HeaderDef::References), grpid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1638,7 +1634,7 @@ mod tests {
|
|||||||
\n\
|
\n\
|
||||||
hello\x00";
|
hello\x00";
|
||||||
let mimeparser = MimeMessage::from_bytes(&context.ctx, &raw[..]).unwrap();
|
let mimeparser = MimeMessage::from_bytes(&context.ctx, &raw[..]).unwrap();
|
||||||
let grpid = Some("HcxyMARjyJy".to_string());
|
let grpid = Some("HcxyMARjyJy");
|
||||||
assert_eq!(extract_grpid(&mimeparser, HeaderDef::InReplyTo), grpid);
|
assert_eq!(extract_grpid(&mimeparser, HeaderDef::InReplyTo), grpid);
|
||||||
assert_eq!(extract_grpid(&mimeparser, HeaderDef::References), grpid);
|
assert_eq!(extract_grpid(&mimeparser, HeaderDef::References), grpid);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user