From 4b91a88bc9ae05cd599a09a9939196e5f587397f Mon Sep 17 00:00:00 2001 From: link2xt Date: Mon, 5 Sep 2022 11:12:33 +0300 Subject: [PATCH] Do not prepend subject to mailing list chat messages (#3253) --- CHANGELOG.md | 2 ++ src/mimeparser.rs | 2 +- src/receive_imf.rs | 21 ++++++++++++++ .../message/mailinglist_chat_message.eml | 29 +++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 test-data/message/mailinglist_chat_message.eml diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d41b8d53..eaf97a25d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ - do not emit notifications for blocked chats #3557 - Show attached .eml files correctly #3561 - Auto accept contact requests if `Config::Bot` is set for a client #3567 +- Don't prepend the subject to chat messages in mailinglists + ## 1.93.0 diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 63bfab56a..142fa0ed6 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -551,7 +551,7 @@ impl MimeMessage { // For mailing lists, always add the subject because sometimes there are different topics // and otherwise it might be hard to keep track: - if self.is_mailinglist_message() { + if self.is_mailinglist_message() && !self.has_chat_version() { prepend_subject = true; } diff --git a/src/receive_imf.rs b/src/receive_imf.rs index d280fa01e..7000aca3a 100644 --- a/src/receive_imf.rs +++ b/src/receive_imf.rs @@ -3572,6 +3572,27 @@ Hello mailinglist!\r\n" ) } + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] + async fn test_mailing_list_chat_message() { + let t = TestContext::new_alice().await; + + receive_imf( + &t, + include_bytes!("../test-data/message/mailinglist_chat_message.eml"), + false, + ) + .await + .unwrap(); + let msg = t.get_last_msg().await; + assert_eq!(msg.text, Some("hello, this is a test 👋\n\n_______________________________________________\nTest1 mailing list -- test1@example.net\nTo unsubscribe send an email to test1-leave@example.net".to_string())); + assert!(!msg.has_html()); + let chat = Chat::load_from_db(&t, msg.chat_id).await.unwrap(); + assert_eq!(chat.typ, Chattype::Mailinglist); + assert_eq!(chat.blocked, Blocked::Request); + assert_eq!(chat.grpid, "test1.example.net"); + assert_eq!(chat.name, "Test1"); + } + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] async fn test_dont_show_tokens_in_contacts_list() { check_dont_show_in_contacts_list( diff --git a/test-data/message/mailinglist_chat_message.eml b/test-data/message/mailinglist_chat_message.eml new file mode 100644 index 000000000..edf0e68a2 --- /dev/null +++ b/test-data/message/mailinglist_chat_message.eml @@ -0,0 +1,29 @@ +From: +To: +Date: Sat, 23 Apr 2022 00:40:47 +0000 +Message-ID: +In-Reply-To: +References: + +Chat-Version: 1.0 +MIME-Version: 1.0 +Message-ID-Hash: NTNAY2662T7LMIXRSA2VZMFR52VKP35F +X-Message-ID-Hash: NTNAY2662T7LMIXRSA2VZMFR52VKP35F +X-MailFrom: tmp.jvg4y@testrun.org +X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header +X-Mailman-Version: 3.3.6b1 +Precedence: list +Subject: [Test1] Re: Message from alice@example.org +List-Id: +List-Help: +List-Owner: +List-Post: +List-Subscribe: +List-Unsubscribe: +Content-Type: text/plain; charset="utf-8"; format="flowed"; delsp="no" +Content-Transfer-Encoding: base64 + +aGVsbG8sIHRoaXMgaXMgYSB0ZXN0IPCfkYsNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19f +X19fX19fX19fX19fX19fX19fX18KVGVzdDEgbWFpbGluZyBsaXN0IC0tIHRlc3QxQGV4YW1wbGUu +bmV0ClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gdGVzdDEtbGVhdmVAZXhhbXBsZS5u +ZXQK