@@ -1079,37 +1079,24 @@ async fn create_or_lookup_group(
1079
1079
set_better_msg ( mime_parser, & better_msg) ;
1080
1080
}
1081
1081
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) ;
1086
1083
1087
1084
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
+ } ) ;
1112
1098
}
1099
+
1113
1100
// now we have a grpid that is non-empty
1114
1101
// but we might not know about this group
1115
1102
@@ -1378,6 +1365,27 @@ async fn create_or_lookup_group(
1378
1365
Ok ( ( chat_id, chat_id_blocked) )
1379
1366
}
1380
1367
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
+
1381
1389
/// try extract a grpid from a message-id list header value
1382
1390
fn extract_grpid ( mime_parser : & MimeMessage , headerdef : HeaderDef ) -> Option < & str > {
1383
1391
let header = mime_parser. get ( headerdef) ?;
0 commit comments