Skip to content

Commit 7fe4ce8

Browse files
author
chimnayajith
committed
subscription_list: Exclude archived channels from list
1 parent 8118792 commit 7fe4ce8

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

lib/widgets/subscription_list.dart

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,12 @@ class _SubscriptionListPageBodyState extends State<SubscriptionListPageBody> wit
8484
final List<Subscription> pinned = [];
8585
final List<Subscription> unpinned = [];
8686
for (final subscription in store.subscriptions.values) {
87-
if (subscription.pinToTop) {
88-
pinned.add(subscription);
89-
} else {
90-
unpinned.add(subscription);
87+
if(!subscription.isArchived) {
88+
if (subscription.pinToTop) {
89+
pinned.add(subscription);
90+
} else {
91+
unpinned.add(subscription);
92+
}
9193
}
9294
}
9395
_sortSubs(pinned);
@@ -187,10 +189,13 @@ class _SubscriptionList extends StatelessWidget {
187189

188190
@override
189191
Widget build(BuildContext context) {
192+
// Filtering out the archived subscriptions.
193+
final activeSubscriptions = subscriptions.where((sub) => !sub.isArchived).toList();
194+
190195
return SliverList.builder(
191-
itemCount: subscriptions.length,
196+
itemCount: activeSubscriptions.length,
192197
itemBuilder: (BuildContext context, int index) {
193-
final subscription = subscriptions[index];
198+
final subscription = activeSubscriptions[index];
194199
final unreadCount = unreadsModel!.countInChannel(subscription.streamId);
195200
final showMutedUnreadBadge = unreadCount == 0
196201
&& unreadsModel!.countInChannelNarrow(subscription.streamId) > 0;

test/widgets/subscription_list_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,20 @@ void main() {
7575
check(isUnpinnedHeaderInTree()).isTrue();
7676
});
7777

78+
testWidgets('archived subscriptions are filtered out', (tester) async {
79+
await setupStreamListPage(tester, subscriptions: [
80+
eg.subscription(eg.stream(streamId: 1, isArchived: true), pinToTop: true),
81+
eg.subscription(eg.stream(streamId: 2), pinToTop: true),
82+
eg.subscription(eg.stream(streamId: 3, isArchived: true), pinToTop: false),
83+
eg.subscription(eg.stream(streamId: 4,), pinToTop: false),
84+
]);
85+
86+
// Only non-archived streams
87+
check(getItemCount()).equals(2);
88+
check(isPinnedHeaderInTree()).isTrue();
89+
check(isUnpinnedHeaderInTree()).isTrue();
90+
});
91+
7892
testWidgets('only pinned subscriptions', (tester) async {
7993
await setupStreamListPage(tester, subscriptions: [
8094
eg.subscription(eg.stream(streamId: 1), pinToTop: true),

0 commit comments

Comments
 (0)