@@ -780,21 +780,23 @@ void main() async {
780
780
// whether the sender should be shown, but the difference between
781
781
// fetchInitial and maybeAddMessage etc. doesn't matter.
782
782
783
- const timestamp = 1693602618 ;
783
+ const t1 = 1693602618 ;
784
+ const t2 = t1 + 86400 ;
784
785
final stream = eg.stream ();
785
- Message streamMessage (int id, User sender) =>
786
+ Message streamMessage (int id, int timestamp, User sender) =>
786
787
eg.streamMessage (id: id, sender: sender,
787
788
stream: stream, topic: 'foo' , timestamp: timestamp);
788
- Message dmMessage (int id, User sender) =>
789
+ Message dmMessage (int id, int timestamp, User sender) =>
789
790
eg.dmMessage (id: id, from: sender, timestamp: timestamp,
790
791
to: [sender.userId == eg.selfUser.userId ? eg.otherUser : eg.selfUser]);
791
792
792
793
prepare ();
793
794
await prepareMessages (foundOldest: true , messages: [
794
- streamMessage (1 , eg.selfUser), // first message, so show sender
795
- streamMessage (2 , eg.selfUser), // hide sender
796
- streamMessage (3 , eg.otherUser), // no recipient header, but new sender
797
- dmMessage (4 , eg.otherUser), // same sender, but recipient header
795
+ streamMessage (1 , t1, eg.selfUser), // first message, so show sender
796
+ streamMessage (2 , t1, eg.selfUser), // hide sender
797
+ streamMessage (3 , t1, eg.otherUser), // no recipient header, but new sender
798
+ dmMessage (4 , t1, eg.otherUser), // same sender, but new recipient
799
+ dmMessage (5 , t2, eg.otherUser), // same sender/recipient, but new day
798
800
]);
799
801
800
802
// We check showSender has the right values in [checkInvariants],
@@ -807,6 +809,8 @@ void main() async {
807
809
it ()..isA <MessageListMessageItem >().showSender.isTrue (),
808
810
it ()..isA <MessageListRecipientHeaderItem >(),
809
811
it ()..isA <MessageListMessageItem >().showSender.isTrue (),
812
+ it ()..isA <MessageListDateSeparatorItem >(),
813
+ it ()..isA <MessageListMessageItem >().showSender.isTrue (),
810
814
]);
811
815
});
812
816
@@ -946,21 +950,22 @@ void checkInvariants(MessageListView model) {
946
950
check (model.items[i++ ]).isA <MessageListLoadingItem >();
947
951
}
948
952
for (int j = 0 ; j < model.messages.length; j++ ) {
949
- bool isFirstInBlock = false ;
953
+ bool forcedShowSender = false ;
950
954
if (j == 0
951
955
|| ! haveSameRecipient (model.messages[j- 1 ], model.messages[j])) {
952
956
check (model.items[i++ ]).isA <MessageListRecipientHeaderItem >()
953
957
.message.identicalTo (model.messages[j]);
954
- isFirstInBlock = true ;
958
+ forcedShowSender = true ;
955
959
} else if (! messagesSameDay (model.messages[j- 1 ], model.messages[j])) {
956
960
check (model.items[i++ ]).isA <MessageListDateSeparatorItem >()
957
961
.message.identicalTo (model.messages[j]);
962
+ forcedShowSender = true ;
958
963
}
959
964
check (model.items[i++ ]).isA <MessageListMessageItem >()
960
965
..message.identicalTo (model.messages[j])
961
966
..content.identicalTo (model.contents[j])
962
967
..showSender.equals (
963
- isFirstInBlock || model.messages[j].senderId != model.messages[j- 1 ].senderId)
968
+ forcedShowSender || model.messages[j].senderId != model.messages[j- 1 ].senderId)
964
969
..isLastInBlock.equals (
965
970
i == model.items.length || model.items[i] is ! MessageListMessageItem );
966
971
}
0 commit comments