Skip to content

Commit b06ac7e

Browse files
committed
msglist: Show recipient headers on all messages, in Mentions / Starred
Fixes: zulip#1637
1 parent edba020 commit b06ac7e

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/model/message_list.dart

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ enum FetchingStatus {
105105
///
106106
/// This comprises much of the guts of [MessageListView].
107107
mixin _MessageSequence {
108+
bool get oneMessagePerBlock;
109+
108110
/// A sequence number for invalidating stale fetches.
109111
int generation = 0;
110112

@@ -435,7 +437,11 @@ mixin _MessageSequence {
435437
required MessageListMessageBaseItem Function(bool canShareSender) buildItem,
436438
}) {
437439
final bool canShareSender;
438-
if (prevMessage == null || !haveSameRecipient(prevMessage, message)) {
440+
if (
441+
prevMessage == null
442+
|| oneMessagePerBlock
443+
|| !haveSameRecipient(prevMessage, message)
444+
) {
439445
items.add(MessageListRecipientHeaderItem(message));
440446
canShareSender = false;
441447
} else {
@@ -613,6 +619,15 @@ class MessageListView with ChangeNotifier, _MessageSequence {
613619
Anchor get anchor => _anchor;
614620
Anchor _anchor;
615621

622+
@override bool get oneMessagePerBlock => switch (narrow) {
623+
CombinedFeedNarrow()
624+
|| ChannelNarrow()
625+
|| TopicNarrow()
626+
|| DmNarrow() => false,
627+
MentionsNarrow()
628+
|| StarredMessagesNarrow() => true,
629+
};
630+
616631
void _register() {
617632
store.registerMessageList(this);
618633
}

test/model/message_list_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3011,6 +3011,7 @@ void checkInvariants(MessageListView model) {
30113011
for (int j = 0; j < allMessages.length; j++) {
30123012
bool forcedShowSender = false;
30133013
if (j == 0
3014+
|| model.oneMessagePerBlock
30143015
|| !haveSameRecipient(allMessages[j-1], allMessages[j])) {
30153016
check(model.items[i++]).isA<MessageListRecipientHeaderItem>()
30163017
.message.identicalTo(allMessages[j]);

0 commit comments

Comments
 (0)