Skip to content

Commit 494d33f

Browse files
PIG208chrisbobbe
authored andcommitted
nav [nfc]: Move HomePage to a new home
Signed-off-by: Zixuan James Li <[email protected]>
1 parent 084cb2f commit 494d33f

File tree

6 files changed

+102
-92
lines changed

6 files changed

+102
-92
lines changed

lib/widgets/app.dart

Lines changed: 1 addition & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,16 @@ import 'package:flutter/scheduler.dart';
77
import '../generated/l10n/zulip_localizations.dart';
88
import '../log.dart';
99
import '../model/localizations.dart';
10-
import '../model/narrow.dart';
1110
import '../model/store.dart';
1211
import '../notifications/display.dart';
1312
import 'about_zulip.dart';
1413
import 'actions.dart';
15-
import 'app_bar.dart';
1614
import 'dialog.dart';
15+
import 'home.dart';
1716
import 'inbox.dart';
1817
import 'login.dart';
19-
import 'message_list.dart';
2018
import 'page.dart';
21-
import 'recent_dm_conversations.dart';
2219
import 'store.dart';
23-
import 'subscription_list.dart';
24-
import 'text.dart';
2520
import 'theme.dart';
2621

2722
class ZulipApp extends StatefulWidget {
@@ -339,88 +334,3 @@ class ChooseAccountPageOverflowButton extends StatelessWidget {
339334
});
340335
}
341336
}
342-
343-
class HomePage extends StatelessWidget {
344-
const HomePage({super.key});
345-
346-
static Route<void> buildRoute({required int accountId}) {
347-
return MaterialAccountWidgetRoute(accountId: accountId,
348-
page: const HomePage());
349-
}
350-
351-
@override
352-
Widget build(BuildContext context) {
353-
final store = PerAccountStoreWidget.of(context);
354-
final zulipLocalizations = ZulipLocalizations.of(context);
355-
356-
final colorScheme = ColorScheme.of(context);
357-
358-
InlineSpan bold(String text) => TextSpan(
359-
style: const TextStyle().merge(weightVariableTextStyle(context, wght: 700)),
360-
text: text);
361-
362-
int? testStreamId;
363-
if (store.connection.realmUrl.origin == 'https://chat.zulip.org') {
364-
testStreamId = 7; // i.e. `#test here`; TODO cut this scaffolding hack
365-
}
366-
367-
return Scaffold(
368-
appBar: ZulipAppBar(title: const Text("Home")),
369-
body: ElevatedButtonTheme(
370-
data: ElevatedButtonThemeData(style: ButtonStyle(
371-
backgroundColor: WidgetStatePropertyAll(colorScheme.secondaryContainer),
372-
foregroundColor: WidgetStatePropertyAll(colorScheme.onSecondaryContainer))),
373-
child: Center(
374-
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
375-
DefaultTextStyle.merge(
376-
textAlign: TextAlign.center,
377-
style: const TextStyle(fontSize: 18),
378-
child: Column(children: [
379-
Text.rich(TextSpan(
380-
text: 'Connected to: ',
381-
children: [bold(store.realmUrl.toString())])),
382-
])),
383-
const SizedBox(height: 16),
384-
ElevatedButton(
385-
onPressed: () => Navigator.push(context,
386-
MessageListPage.buildRoute(context: context,
387-
narrow: const CombinedFeedNarrow())),
388-
child: Text(zulipLocalizations.combinedFeedPageTitle)),
389-
const SizedBox(height: 16),
390-
ElevatedButton(
391-
onPressed: () => Navigator.push(context,
392-
MessageListPage.buildRoute(context: context,
393-
narrow: const MentionsNarrow())),
394-
child: Text(zulipLocalizations.mentionsPageTitle)),
395-
const SizedBox(height: 16),
396-
ElevatedButton(
397-
onPressed: () => Navigator.push(context,
398-
MessageListPage.buildRoute(context: context,
399-
narrow: const StarredMessagesNarrow())),
400-
child: Text(zulipLocalizations.starredMessagesPageTitle)),
401-
const SizedBox(height: 16),
402-
ElevatedButton(
403-
onPressed: () => Navigator.push(context,
404-
InboxPage.buildRoute(context: context)),
405-
child: const Text("Inbox")), // TODO(i18n)
406-
const SizedBox(height: 16),
407-
ElevatedButton(
408-
onPressed: () => Navigator.push(context,
409-
SubscriptionListPage.buildRoute(context: context)),
410-
child: const Text("Subscribed channels")),
411-
const SizedBox(height: 16),
412-
ElevatedButton(
413-
onPressed: () => Navigator.push(context,
414-
RecentDmConversationsPage.buildRoute(context: context)),
415-
child: Text(zulipLocalizations.recentDmConversationsPageTitle)),
416-
if (testStreamId != null) ...[
417-
const SizedBox(height: 16),
418-
ElevatedButton(
419-
onPressed: () => Navigator.push(context,
420-
MessageListPage.buildRoute(context: context,
421-
narrow: ChannelNarrow(testStreamId!))),
422-
child: const Text("#test here")), // scaffolding hack, see above
423-
],
424-
]))));
425-
}
426-
}

lib/widgets/home.dart

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
import 'package:flutter/material.dart';
2+
3+
import '../generated/l10n/zulip_localizations.dart';
4+
import '../model/narrow.dart';
5+
import 'app_bar.dart';
6+
import 'inbox.dart';
7+
import 'message_list.dart';
8+
import 'page.dart';
9+
import 'recent_dm_conversations.dart';
10+
import 'store.dart';
11+
import 'subscription_list.dart';
12+
import 'text.dart';
13+
14+
class HomePage extends StatelessWidget {
15+
const HomePage({super.key});
16+
17+
static Route<void> buildRoute({required int accountId}) {
18+
return MaterialAccountWidgetRoute(accountId: accountId,
19+
page: const HomePage());
20+
}
21+
22+
@override
23+
Widget build(BuildContext context) {
24+
final store = PerAccountStoreWidget.of(context);
25+
final zulipLocalizations = ZulipLocalizations.of(context);
26+
27+
final colorScheme = ColorScheme.of(context);
28+
29+
InlineSpan bold(String text) => TextSpan(
30+
style: const TextStyle().merge(weightVariableTextStyle(context, wght: 700)),
31+
text: text);
32+
33+
int? testStreamId;
34+
if (store.connection.realmUrl.origin == 'https://chat.zulip.org') {
35+
testStreamId = 7; // i.e. `#test here`; TODO cut this scaffolding hack
36+
}
37+
38+
return Scaffold(
39+
appBar: ZulipAppBar(title: const Text("Home")),
40+
body: ElevatedButtonTheme(
41+
data: ElevatedButtonThemeData(style: ButtonStyle(
42+
backgroundColor: WidgetStatePropertyAll(colorScheme.secondaryContainer),
43+
foregroundColor: WidgetStatePropertyAll(colorScheme.onSecondaryContainer))),
44+
child: Center(
45+
child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
46+
DefaultTextStyle.merge(
47+
textAlign: TextAlign.center,
48+
style: const TextStyle(fontSize: 18),
49+
child: Column(children: [
50+
Text.rich(TextSpan(
51+
text: 'Connected to: ',
52+
children: [bold(store.realmUrl.toString())])),
53+
])),
54+
const SizedBox(height: 16),
55+
ElevatedButton(
56+
onPressed: () => Navigator.push(context,
57+
MessageListPage.buildRoute(context: context,
58+
narrow: const CombinedFeedNarrow())),
59+
child: Text(zulipLocalizations.combinedFeedPageTitle)),
60+
const SizedBox(height: 16),
61+
ElevatedButton(
62+
onPressed: () => Navigator.push(context,
63+
MessageListPage.buildRoute(context: context,
64+
narrow: const MentionsNarrow())),
65+
child: Text(zulipLocalizations.mentionsPageTitle)),
66+
const SizedBox(height: 16),
67+
ElevatedButton(
68+
onPressed: () => Navigator.push(context,
69+
MessageListPage.buildRoute(context: context,
70+
narrow: const StarredMessagesNarrow())),
71+
child: Text(zulipLocalizations.starredMessagesPageTitle)),
72+
const SizedBox(height: 16),
73+
ElevatedButton(
74+
onPressed: () => Navigator.push(context,
75+
InboxPage.buildRoute(context: context)),
76+
child: const Text("Inbox")), // TODO(i18n)
77+
const SizedBox(height: 16),
78+
ElevatedButton(
79+
onPressed: () => Navigator.push(context,
80+
SubscriptionListPage.buildRoute(context: context)),
81+
child: const Text("Subscribed channels")),
82+
const SizedBox(height: 16),
83+
ElevatedButton(
84+
onPressed: () => Navigator.push(context,
85+
RecentDmConversationsPage.buildRoute(context: context)),
86+
child: Text(zulipLocalizations.recentDmConversationsPageTitle)),
87+
if (testStreamId != null) ...[
88+
const SizedBox(height: 16),
89+
ElevatedButton(
90+
onPressed: () => Navigator.push(context,
91+
MessageListPage.buildRoute(context: context,
92+
narrow: ChannelNarrow(testStreamId!))),
93+
child: const Text("#test here")), // scaffolding hack, see above
94+
],
95+
]))));
96+
}
97+
}

lib/widgets/login.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import '../generated/l10n/zulip_localizations.dart';
1414
import '../log.dart';
1515
import '../model/binding.dart';
1616
import '../model/store.dart';
17-
import 'app.dart';
1817
import 'dialog.dart';
18+
import 'home.dart';
1919
import 'input.dart';
2020
import 'page.dart';
2121
import 'store.dart';

test/notifications/display_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import 'package:zulip/notifications/display.dart';
2121
import 'package:zulip/notifications/receive.dart';
2222
import 'package:zulip/widgets/app.dart';
2323
import 'package:zulip/widgets/color.dart';
24+
import 'package:zulip/widgets/home.dart';
2425
import 'package:zulip/widgets/inbox.dart';
2526
import 'package:zulip/widgets/message_list.dart';
2627
import 'package:zulip/widgets/page.dart';

test/widgets/app_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:flutter_test/flutter_test.dart';
44
import 'package:zulip/log.dart';
55
import 'package:zulip/model/database.dart';
66
import 'package:zulip/widgets/app.dart';
7+
import 'package:zulip/widgets/home.dart';
78
import 'package:zulip/widgets/inbox.dart';
89
import 'package:zulip/widgets/page.dart';
910

test/widgets/login_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import 'package:zulip/api/route/realm.dart';
1111
import 'package:zulip/model/binding.dart';
1212
import 'package:zulip/model/localizations.dart';
1313
import 'package:zulip/widgets/app.dart';
14+
import 'package:zulip/widgets/home.dart';
1415
import 'package:zulip/widgets/login.dart';
1516
import 'package:zulip/widgets/page.dart';
1617

0 commit comments

Comments
 (0)