From 1a14b4eea58e1daf76547be5022999d1ab83795c Mon Sep 17 00:00:00 2001 From: CherretGit Date: Tue, 26 May 2026 00:06:07 +0700 Subject: [PATCH] add invites tab --- assets/l10n/intl_en.arb | 7 ++++++- assets/l10n/intl_ru.arb | 7 ++++++- lib/pages/chat_list/chat_list.dart | 15 ++++++++++++--- lib/pages/chat_list/chat_list_bottom_navbar.dart | 10 ++++++---- .../chat_list/chat_list_legacy_bottom_navbar.dart | 10 ++++++---- 5 files changed, 36 insertions(+), 13 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index e489e0852..b862a53a6 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -3780,5 +3780,10 @@ } } }, - "owner": "Owner" + "owner": "Owner", + "invites": "Invites", + "@invites": { + "type": "String", + "placeholders": {} + } } diff --git a/assets/l10n/intl_ru.arb b/assets/l10n/intl_ru.arb index 70d568660..42470da68 100644 --- a/assets/l10n/intl_ru.arb +++ b/assets/l10n/intl_ru.arb @@ -3852,5 +3852,10 @@ "engine": {"type": "String"} } }, - "owner": "Владелец" + "owner": "Владелец", + "invites": "Приглашения", + "@invites": { + "type": "String", + "placeholders": {} + } } diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index fd47058b3..dc3425383 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -44,7 +44,7 @@ enum PopupMenuAction { archive, } -enum ActiveFilter { allChats, messages, groups, unread, spaces, people } +enum ActiveFilter { allChats, messages, groups, unread, invites, spaces, people } extension LocalizedActiveFilter on ActiveFilter { String toLocalizedString(BuildContext context) { @@ -57,6 +57,8 @@ extension LocalizedActiveFilter on ActiveFilter { return L10n.of(context).unread; case ActiveFilter.groups: return L10n.of(context).groups; + case ActiveFilter.invites: + return L10n.of(context).invites; case ActiveFilter.spaces: return L10n.of(context).spaces; case ActiveFilter.people: @@ -75,6 +77,8 @@ extension LocalizedActiveFilter on ActiveFilter { : Icons.mark_unread_chat_alt; case .groups: return outline ? Icons.people_outline : Icons.people; + case .invites: + return outline ? Icons.mail_outline : Icons.mail; case .spaces: return outline ? Icons.grid_view_outlined : Icons.grid_view_rounded; case .people: @@ -166,6 +170,7 @@ class ChatListController extends State case .allChats: return (room) => !room.isSpace && + !room.membership.isInvite && (AppSettings.showSpaceRoomsInGlobalList.value || room.spaceParents .where((space) => spacesIds.contains(space.roomId)) @@ -174,6 +179,7 @@ class ChatListController extends State return (room) => !room.isSpace && room.isDirectChat && + !room.membership.isInvite && (AppSettings.showSpaceRoomsInGlobalList.value || room.spaceParents .where((space) => spacesIds.contains(space.roomId)) @@ -182,14 +188,17 @@ class ChatListController extends State return (room) => !room.isSpace && !room.isDirectChat && + !room.membership.isInvite && (AppSettings.showSpaceRoomsInGlobalList.value || room.spaceParents .where((space) => spacesIds.contains(space.roomId)) .isEmpty); + case .invites: + return (room) => room.membership.isInvite; case .unread: - return (room) => room.isUnreadOrInvited; + return (room) => !room.membership.isInvite && room.isUnreadOrInvited; case .spaces: - return (room) => room.isSpace; + return (room) => !room.membership.isInvite && room.isSpace; case .people: return (room) => false; } diff --git a/lib/pages/chat_list/chat_list_bottom_navbar.dart b/lib/pages/chat_list/chat_list_bottom_navbar.dart index b0879c8e3..ea05ad6dd 100644 --- a/lib/pages/chat_list/chat_list_bottom_navbar.dart +++ b/lib/pages/chat_list/chat_list_bottom_navbar.dart @@ -51,6 +51,7 @@ class _ChatListBottomNavbarState extends State { ActiveFilter.allChats, if (AppSettings.separateChatTypes.value) ActiveFilter.groups, ActiveFilter.unread, + ActiveFilter.invites, if (spaceDelegateCandidates.isNotEmpty && !_c.widget.displayNavigationRail) ActiveFilter.spaces, @@ -58,10 +59,11 @@ class _ChatListBottomNavbarState extends State { ]; final filterLambdas = { - ActiveFilter.allChats: (Room room) => true, - ActiveFilter.messages: (Room room) => room.isDirectChat, - ActiveFilter.groups: (Room room) => !room.isDirectChat, - ActiveFilter.unread: (Room room) => room.isUnread, + ActiveFilter.allChats: (Room room) => !room.membership.isInvite, + ActiveFilter.messages: (Room room) => !room.membership.isInvite && room.isDirectChat, + ActiveFilter.groups: (Room room) => !room.membership.isInvite && !room.isDirectChat, + ActiveFilter.unread: (Room room) => !room.membership.isInvite && room.isUnread, + ActiveFilter.invites: (Room room) => room.membership.isInvite, ActiveFilter.spaces: (Room room) => false, ActiveFilter.people: (Room room) => false, }; diff --git a/lib/pages/chat_list/chat_list_legacy_bottom_navbar.dart b/lib/pages/chat_list/chat_list_legacy_bottom_navbar.dart index de59c790e..2544a09f9 100644 --- a/lib/pages/chat_list/chat_list_legacy_bottom_navbar.dart +++ b/lib/pages/chat_list/chat_list_legacy_bottom_navbar.dart @@ -50,6 +50,7 @@ class _ChatListLegacyBottomNavbarState ActiveFilter.allChats, if (AppSettings.separateChatTypes.value) ActiveFilter.groups, ActiveFilter.unread, + ActiveFilter.invites, if (spaceDelegateCandidates.isNotEmpty && !_c.widget.displayNavigationRail) ActiveFilter.spaces, @@ -57,10 +58,11 @@ class _ChatListLegacyBottomNavbarState ]; final filterLambdas = { - ActiveFilter.allChats: (Room room) => true, - ActiveFilter.messages: (Room room) => room.isDirectChat, - ActiveFilter.groups: (Room room) => !room.isDirectChat, - ActiveFilter.unread: (Room room) => room.isUnread, + ActiveFilter.allChats: (Room room) => !room.membership.isInvite, + ActiveFilter.messages: (Room room) => !room.membership.isInvite && room.isDirectChat, + ActiveFilter.groups: (Room room) => !room.membership.isInvite && !room.isDirectChat, + ActiveFilter.unread: (Room room) => !room.membership.isInvite && room.isUnread, + ActiveFilter.invites: (Room room) => room.membership.isInvite, ActiveFilter.spaces: (Room room) => false, ActiveFilter.people: (Room room) => false, };