Skip to content

Commit 0d97c31

Browse files
committed
msglist: On tap recipient header, open msglist anchored at message
Fixes: zulip#1621 Related: zulip#252
1 parent 8fba36a commit 0d97c31

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

lib/widgets/message_list.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1437,7 +1437,8 @@ class StreamMessageRecipientHeader extends StatelessWidget {
14371437
streamWidget = GestureDetector(
14381438
onTap: () => Navigator.push(context,
14391439
MessageListPage.buildRoute(context: context,
1440-
narrow: ChannelNarrow(streamId))),
1440+
narrow: ChannelNarrow(streamId),
1441+
initAnchorMessageId: message.id)),
14411442
onLongPress: () => showChannelActionSheet(context, channelId: streamId),
14421443
child: Row(
14431444
crossAxisAlignment: CrossAxisAlignment.center,
@@ -1495,7 +1496,8 @@ class StreamMessageRecipientHeader extends StatelessWidget {
14951496
onTap: narrow is TopicNarrow ? null
14961497
: () => Navigator.push(context,
14971498
MessageListPage.buildRoute(context: context,
1498-
narrow: TopicNarrow.ofMessage(message))),
1499+
narrow: TopicNarrow.ofMessage(message),
1500+
initAnchorMessageId: message.id)),
14991501
onLongPress: () => showTopicActionSheet(context,
15001502
channelId: streamId,
15011503
topic: topic,
@@ -1552,7 +1554,8 @@ class DmRecipientHeader extends StatelessWidget {
15521554
onTap: narrow is DmNarrow ? null
15531555
: () => Navigator.push(context,
15541556
MessageListPage.buildRoute(context: context,
1555-
narrow: DmNarrow.ofMessage(message, selfUserId: store.selfUserId))),
1557+
narrow: DmNarrow.ofMessage(message, selfUserId: store.selfUserId),
1558+
initAnchorMessageId: message.id)),
15561559
child: ColoredBox(
15571560
color: messageListTheme.dmRecipientHeaderBg,
15581561
child: Padding(

test/widgets/message_list_checks.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ import 'package:zulip/widgets/message_list.dart';
44

55
extension MessageListPageChecks on Subject<MessageListPage> {
66
Subject<Narrow> get initNarrow => has((x) => x.initNarrow, 'initNarrow');
7+
Subject<int?> get initAnchorMessageId => has((x) => x.initAnchorMessageId, 'initAnchorMessageId');
78
}

test/widgets/message_list_test.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,7 +1365,8 @@ void main() {
13651365
matching: find.text(channel.name)));
13661366
await tester.pump();
13671367
check(pushedRoutes).single.isA<WidgetRoute>().page.isA<MessageListPage>()
1368-
.initNarrow.equals(ChannelNarrow(channel.streamId));
1368+
..initNarrow.equals(ChannelNarrow(channel.streamId))
1369+
..initAnchorMessageId.isNotNull().equals(message.id);
13691370
await tester.pumpAndSettle();
13701371
});
13711372

@@ -1391,7 +1392,8 @@ void main() {
13911392
matching: find.text('topic name')));
13921393
await tester.pump();
13931394
check(pushedRoutes).single.isA<WidgetRoute>().page.isA<MessageListPage>()
1394-
.initNarrow.equals(TopicNarrow.ofMessage(message));
1395+
..initNarrow.equals(TopicNarrow.ofMessage(message))
1396+
..initAnchorMessageId.isNotNull().equals(message.id);
13951397
await tester.pumpAndSettle();
13961398
});
13971399

@@ -1500,7 +1502,8 @@ void main() {
15001502
await tester.tap(find.byType(DmRecipientHeader));
15011503
await tester.pump();
15021504
check(pushedRoutes).single.isA<WidgetRoute>().page.isA<MessageListPage>()
1503-
.initNarrow.equals(DmNarrow.withUser(eg.otherUser.userId, selfUserId: eg.selfUser.userId));
1505+
..initNarrow.equals(DmNarrow.withUser(eg.otherUser.userId, selfUserId: eg.selfUser.userId))
1506+
..initAnchorMessageId.isNotNull().equals(dmMessage.id);
15041507
await tester.pumpAndSettle();
15051508
});
15061509

0 commit comments

Comments
 (0)