Skip to content

Commit 8629072

Browse files
committed
channel_list: Order channels alphabetically
1 parent f0b710a commit 8629072

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

lib/widgets/channel_list.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ class ChannelListPage extends StatelessWidget {
2020
Widget build(BuildContext context) {
2121
final store = PerAccountStoreWidget.of(context);
2222
final zulipLocalizations = ZulipLocalizations.of(context);
23-
final streams = store.streams.values.toList();
23+
final streams = store.streams.values.toList()..sort((a, b) {
24+
return a.name.toLowerCase().compareTo(b.name.toLowerCase());
25+
});
2426
return Scaffold(
2527
appBar: AppBar(title: Text(zulipLocalizations.channelListPageTitle)),
2628
body: SafeArea(

test/widgets/channel_list_test.dart

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,29 @@ void main() {
4242
await setupChannelListPage(tester, streams: streams, subscriptions: []);
4343
check(getItemCount()).equals(3);
4444
});
45+
46+
group('list ordering', () {
47+
Iterable<String> listedStreamNames(WidgetTester tester) => tester
48+
.widgetList<ChannelItem>(find.byType(ChannelItem))
49+
.map((e) => e.stream.name);
50+
51+
List<ZulipStream> streamsFromNames(List<String> names) {
52+
return names.map((name) => eg.stream(name: name)).toList();
53+
}
54+
55+
testWidgets('is alphabetically case-insensitive', (tester) async {
56+
final streams = streamsFromNames(['b', 'C', 'A']);
57+
await setupChannelListPage(tester, streams: streams, subscriptions: []);
58+
59+
check(listedStreamNames(tester)).deepEquals(['A', 'b', 'C']);
60+
});
61+
62+
testWidgets('is insensitive of user subscription', (tester) async {
63+
final streams = streamsFromNames(['b', 'c', 'a']);
64+
await setupChannelListPage(tester, streams: streams,
65+
subscriptions: [eg.subscription(streams[0])]);
66+
67+
check(listedStreamNames(tester)).deepEquals(['a', 'b', 'c']);
68+
});
69+
});
4570
}

0 commit comments

Comments
 (0)