feat: Group and broadcast channel descriptions (#7829)

fix https://github.com/chatmail/core/issues/7766

Implementation notes:

- Descriptions are only sent with member additions, when the description
is changed, and when promoting a previously-unpromoted group, in order
not to waste bandwith.
- Descriptions are not loaded everytime a chat object is loaded, because
they are only needed for the profile. Instead, they are in their own
table, and can be loaded with their own JsonRPC call.

---------

Co-authored-by: iequidoo <117991069+iequidoo@users.noreply.github.com>
This commit is contained in:
Hocuri
2026-02-10 22:28:12 +01:00
committed by GitHub
parent c475882727
commit 3fdda6f3b8
15 changed files with 411 additions and 24 deletions

View File

@@ -186,10 +186,10 @@ pub enum SystemMessage {
#[default]
Unknown = 0,
/// Group name changed.
/// Group or broadcast channel name changed.
GroupNameChanged = 2,
/// Group avatar changed.
/// Group or broadcast channel avatar changed.
GroupImageChanged = 3,
/// Member was added to the group.
@@ -254,6 +254,9 @@ pub enum SystemMessage {
/// Message indicating that a call was ended.
CallEnded = 67,
/// Group or broadcast channel description changed.
GroupDescriptionChanged = 70,
}
const MIME_AC_SETUP_FILE: &str = "application/autocrypt-setup";
@@ -773,6 +776,11 @@ impl MimeMessage {
self.is_system_message = SystemMessage::MemberAddedToGroup;
} else if self.get_header(HeaderDef::ChatGroupNameChanged).is_some() {
self.is_system_message = SystemMessage::GroupNameChanged;
} else if self
.get_header(HeaderDef::ChatGroupDescriptionChanged)
.is_some()
{
self.is_system_message = SystemMessage::GroupDescriptionChanged;
}
}