Skip to content

Commit bf64923

Browse files
gnpricechrisbobbe
authored andcommitted
home: Add combined feed to bottom nav bar
Fixes #1164.
1 parent 54f0538 commit bf64923

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

lib/widgets/home.dart

+6-1
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,15 @@ class _HomePageState extends State<HomePage> {
101101
// TODO(a11y): add tooltips for these buttons
102102
final navigationBarButtons = [
103103
button(_HomePageTab.inbox, ZulipIcons.inbox),
104+
_NavigationBarButton( icon: ZulipIcons.message_feed,
105+
selected: false,
106+
onPressed: () => Navigator.push(context,
107+
MessageListPage.buildRoute(context: context,
108+
narrow: const CombinedFeedNarrow()))),
104109
button(_HomePageTab.channels, ZulipIcons.hash_italic),
105110
// TODO(#1094): Users
106111
button(_HomePageTab.directMessages, ZulipIcons.user),
107-
_NavigationBarButton( icon: ZulipIcons.menu,
112+
_NavigationBarButton( icon: ZulipIcons.menu,
108113
selected: false,
109114
onPressed: () => _showMainMenu(context, tabNotifier: _tab)),
110115
];

test/widgets/home_test.dart

+27-1
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@ import 'package:flutter/material.dart';
33
import 'package:flutter_checks/flutter_checks.dart';
44
import 'package:flutter_test/flutter_test.dart';
55
import 'package:zulip/api/model/events.dart';
6+
import 'package:zulip/model/narrow.dart';
67
import 'package:zulip/model/store.dart';
78
import 'package:zulip/widgets/app.dart';
89
import 'package:zulip/widgets/app_bar.dart';
910
import 'package:zulip/widgets/home.dart';
1011
import 'package:zulip/widgets/icons.dart';
1112
import 'package:zulip/widgets/inbox.dart';
13+
import 'package:zulip/widgets/message_list.dart';
1214
import 'package:zulip/widgets/page.dart';
1315
import 'package:zulip/widgets/profile.dart';
1416
import 'package:zulip/widgets/subscription_list.dart';
@@ -19,22 +21,29 @@ import '../example_data.dart' as eg;
1921
import '../flutter_checks.dart';
2022
import '../model/binding.dart';
2123
import '../model/test_store.dart';
24+
import '../test_navigation.dart';
25+
import 'message_list_checks.dart';
2226
import 'page_checks.dart';
2327
import 'test_app.dart';
2428

2529
void main () {
2630
TestZulipBinding.ensureInitialized();
2731

2832
late PerAccountStore store;
33+
late FakeApiConnection connection;
2934

30-
Future<void> prepare(WidgetTester tester) async {
35+
Future<void> prepare(WidgetTester tester, {
36+
NavigatorObserver? navigatorObserver,
37+
}) async {
3138
addTearDown(testBinding.reset);
3239
await testBinding.globalStore.add(eg.selfAccount, eg.initialSnapshot());
3340
store = await testBinding.globalStore.perAccount(eg.selfAccount.id);
41+
connection = store.connection as FakeApiConnection;
3442
await store.addUser(eg.selfUser);
3543

3644
await tester.pumpWidget(TestZulipApp(
3745
accountId: eg.selfAccount.id,
46+
navigatorObservers: navigatorObserver != null ? [navigatorObserver] : [],
3847
child: const HomePage()));
3948
await tester.pump();
4049
}
@@ -88,6 +97,23 @@ void main () {
8897
of: find.byType(ZulipAppBar),
8998
matching: find.text('Direct messages'))).findsOne();
9099
});
100+
101+
testWidgets('combined feed', (tester) async {
102+
final pushedRoutes = <Route<dynamic>>[];
103+
final testNavObserver = TestNavigatorObserver()
104+
..onPushed = (route, prevRoute) => pushedRoutes.add(route);
105+
await prepare(tester, navigatorObserver: testNavObserver);
106+
pushedRoutes.clear();
107+
108+
connection.prepare(json: eg.newestGetMessagesResult(
109+
foundOldest: true, messages: []).toJson());
110+
await tester.tap(find.byIcon(ZulipIcons.message_feed));
111+
await tester.pump();
112+
await tester.pump(const Duration(milliseconds: 250));
113+
check(pushedRoutes).single.isA<WidgetRoute>().page
114+
.isA<MessageListPage>()
115+
.initNarrow.equals(const CombinedFeedNarrow());
116+
});
91117
});
92118

93119
group('menu', () {

0 commit comments

Comments
 (0)