Skip to content

Commit e6b7a7e

Browse files
Hocurilink2xt
authored and
link2xt
committed
saved-messages do not pop up in original chat in multi-device anymore
fix #2020 When forwarding a message, the original `in_reply_to` stays in place. I did not find any recent commit that changed anything about this, but IIRC there was a bug that prevented setting the `in_reply_to` at all. So, for chat messages, do not look at the InReplyTo header (and also not at the References header)
1 parent c438691 commit e6b7a7e

File tree

1 file changed

+36
-28
lines changed

1 file changed

+36
-28
lines changed

src/dc_receive_imf.rs

+36-28
Original file line numberDiff line numberDiff line change
@@ -1079,37 +1079,24 @@ async fn create_or_lookup_group(
10791079
set_better_msg(mime_parser, &better_msg);
10801080
}
10811081

1082-
let mut grpid = "".to_string();
1083-
if let Some(optional_field) = mime_parser.get(HeaderDef::ChatGroupId) {
1084-
grpid = optional_field.clone();
1085-
}
1082+
let grpid = try_getting_grpid(mime_parser);
10861083

10871084
if grpid.is_empty() {
1088-
if let Some(extracted_grpid) = mime_parser
1089-
.get(HeaderDef::MessageId)
1090-
.and_then(|value| dc_extract_grpid_from_rfc724_mid(&value))
1091-
{
1092-
grpid = extracted_grpid.to_string();
1093-
} else if let Some(extracted_grpid) = extract_grpid(mime_parser, HeaderDef::InReplyTo) {
1094-
grpid = extracted_grpid.to_string();
1095-
} else if let Some(extracted_grpid) = extract_grpid(mime_parser, HeaderDef::References) {
1096-
grpid = extracted_grpid.to_string();
1097-
} else {
1098-
return create_or_lookup_adhoc_group(
1099-
context,
1100-
mime_parser,
1101-
allow_creation,
1102-
create_blocked,
1103-
from_id,
1104-
to_ids,
1105-
)
1106-
.await
1107-
.map_err(|err| {
1108-
info!(context, "could not create adhoc-group: {:?}", err);
1109-
err
1110-
});
1111-
}
1085+
return create_or_lookup_adhoc_group(
1086+
context,
1087+
mime_parser,
1088+
allow_creation,
1089+
create_blocked,
1090+
from_id,
1091+
to_ids,
1092+
)
1093+
.await
1094+
.map_err(|err| {
1095+
info!(context, "could not create adhoc-group: {:?}", err);
1096+
err
1097+
});
11121098
}
1099+
11131100
// now we have a grpid that is non-empty
11141101
// but we might not know about this group
11151102

@@ -1378,6 +1365,27 @@ async fn create_or_lookup_group(
13781365
Ok((chat_id, chat_id_blocked))
13791366
}
13801367

1368+
fn try_getting_grpid(mime_parser: &MimeMessage) -> String {
1369+
if let Some(optional_field) = mime_parser.get(HeaderDef::ChatGroupId) {
1370+
return optional_field.clone();
1371+
}
1372+
1373+
if let Some(extracted_grpid) = mime_parser
1374+
.get(HeaderDef::MessageId)
1375+
.and_then(|value| dc_extract_grpid_from_rfc724_mid(&value))
1376+
{
1377+
return extracted_grpid.to_string();
1378+
}
1379+
if !mime_parser.has_chat_version() {
1380+
if let Some(extracted_grpid) = extract_grpid(mime_parser, HeaderDef::InReplyTo) {
1381+
return extracted_grpid.to_string();
1382+
} else if let Some(extracted_grpid) = extract_grpid(mime_parser, HeaderDef::References) {
1383+
return extracted_grpid.to_string();
1384+
}
1385+
}
1386+
"".to_string()
1387+
}
1388+
13811389
/// try extract a grpid from a message-id list header value
13821390
fn extract_grpid(mime_parser: &MimeMessage, headerdef: HeaderDef) -> Option<&str> {
13831391
let header = mime_parser.get(headerdef)?;

0 commit comments

Comments
 (0)