Use group capabilities in leave group hook (#600)

* feat: add feature flags provider for leave group

* feat: update leave group locales

* feat: add self remove to chat list chat summary

* feat: adjust use leave group hook to show it only when allowed

* chore: update podfile.lock
This commit is contained in:
Pepi
2026-04-29 10:08:16 -04:00
committed by GitHub
parent 92b7e9b205
commit 2300885c67
33 changed files with 575 additions and 111 deletions
+3
View File
@@ -76,6 +76,8 @@ pub struct ChatSummary {
/// When this account was removed from the group by an admin, if at all.
/// `Some` means the group is read-only; the user must archive/delete to hide it.
pub removed_at: Option<DateTime<Utc>>,
/// Whether the user voluntarily left the group. Only meaningful when `removed_at` is `Some`.
pub self_removed: bool,
/// Number of unread messages in this chat
pub unread_count: u64,
/// Pin order for chat list sorting.
@@ -107,6 +109,7 @@ impl From<WhitenoiseChatListItem> for ChatSummary {
welcomer_pubkey: item.welcomer_pubkey.map(|pk| pk.to_hex()),
archived_at: item.archived_at,
removed_at: item.removed_at,
self_removed: item.self_removed,
unread_count: item.unread_count as u64,
pin_order: item.pin_order,
dm_peer_pubkey: item.dm_peer_pubkey.map(|pk| pk.to_hex()),
+4
View File
@@ -6153,6 +6153,7 @@ impl SseDecode for crate::api::chat_list::ChatSummary {
let mut var_welcomerPubkey = <Option<String>>::sse_decode(deserializer);
let mut var_archivedAt = <Option<chrono::DateTime<chrono::Utc>>>::sse_decode(deserializer);
let mut var_removedAt = <Option<chrono::DateTime<chrono::Utc>>>::sse_decode(deserializer);
let mut var_selfRemoved = <bool>::sse_decode(deserializer);
let mut var_unreadCount = <u64>::sse_decode(deserializer);
let mut var_pinOrder = <Option<i64>>::sse_decode(deserializer);
let mut var_dmPeerPubkey = <Option<String>>::sse_decode(deserializer);
@@ -6169,6 +6170,7 @@ impl SseDecode for crate::api::chat_list::ChatSummary {
welcomer_pubkey: var_welcomerPubkey,
archived_at: var_archivedAt,
removed_at: var_removedAt,
self_removed: var_selfRemoved,
unread_count: var_unreadCount,
pin_order: var_pinOrder,
dm_peer_pubkey: var_dmPeerPubkey,
@@ -8484,6 +8486,7 @@ impl flutter_rust_bridge::IntoDart for crate::api::chat_list::ChatSummary {
self.welcomer_pubkey.into_into_dart().into_dart(),
self.archived_at.into_into_dart().into_dart(),
self.removed_at.into_into_dart().into_dart(),
self.self_removed.into_into_dart().into_dart(),
self.unread_count.into_into_dart().into_dart(),
self.pin_order.into_into_dart().into_dart(),
self.dm_peer_pubkey.into_into_dart().into_dart(),
@@ -10098,6 +10101,7 @@ impl SseEncode for crate::api::chat_list::ChatSummary {
<Option<String>>::sse_encode(self.welcomer_pubkey, serializer);
<Option<chrono::DateTime<chrono::Utc>>>::sse_encode(self.archived_at, serializer);
<Option<chrono::DateTime<chrono::Utc>>>::sse_encode(self.removed_at, serializer);
<bool>::sse_encode(self.self_removed, serializer);
<u64>::sse_encode(self.unread_count, serializer);
<Option<i64>>::sse_encode(self.pin_order, serializer);
<Option<String>>::sse_encode(self.dm_peer_pubkey, serializer);