@@ -1926,17 +1926,24 @@ void checkInvariants(MessageListView model) {
1926
1926
check (model).fetchOlderCoolingDown.isFalse ();
1927
1927
}
1928
1928
1929
- for (final message in model.messages) {
1930
- check (model.store.messages)[message.id].isNotNull ().identicalTo (message);
1929
+ final allMessages = < MessageBase <Conversation >> [...model.messages];
1930
+
1931
+ for (final message in allMessages) {
1932
+ if (message is Message ) {
1933
+ check (model.store.messages)[message.id].isNotNull ().identicalTo (message);
1934
+ } else {
1935
+ assert (false );
1936
+ }
1931
1937
check (model.narrow.containsMessage (message)).isTrue ();
1932
1938
1933
- if (message is ! StreamMessage ) continue ;
1939
+ if (message is ! MessageBase <StreamConversation >) continue ;
1940
+ final conversation = message.conversation;
1934
1941
switch (model.narrow) {
1935
1942
case CombinedFeedNarrow ():
1936
- check (model.store.isTopicVisible (message .streamId, message .topic))
1943
+ check (model.store.isTopicVisible (conversation .streamId, conversation .topic))
1937
1944
.isTrue ();
1938
1945
case ChannelNarrow ():
1939
- check (model.store.isTopicVisibleInStream (message .streamId, message .topic))
1946
+ check (model.store.isTopicVisibleInStream (conversation .streamId, conversation .topic))
1940
1947
.isTrue ();
1941
1948
case TopicNarrow ():
1942
1949
case DmNarrow ():
@@ -1966,23 +1973,28 @@ void checkInvariants(MessageListView model) {
1966
1973
if (model.fetchingOlder || model.fetchOlderCoolingDown) {
1967
1974
check (model.items[i++ ]).isA <MessageListLoadingItem >();
1968
1975
}
1969
- for (int j = 0 ; j < model.messages .length; j++ ) {
1976
+ for (int j = 0 ; j < allMessages .length; j++ ) {
1970
1977
bool forcedShowSender = false ;
1971
1978
if (j == 0
1972
- || ! haveSameRecipient (model.messages [j- 1 ], model.messages [j])) {
1979
+ || ! haveSameRecipient (allMessages [j- 1 ], allMessages [j])) {
1973
1980
check (model.items[i++ ]).isA <MessageListRecipientHeaderItem >()
1974
- .message.identicalTo (model.messages [j]);
1981
+ .message.identicalTo (allMessages [j]);
1975
1982
forcedShowSender = true ;
1976
- } else if (! messagesSameDay (model.messages [j- 1 ], model.messages [j])) {
1983
+ } else if (! messagesSameDay (allMessages [j- 1 ], allMessages [j])) {
1977
1984
check (model.items[i++ ]).isA <MessageListDateSeparatorItem >()
1978
- .message.identicalTo (model.messages [j]);
1985
+ .message.identicalTo (allMessages [j]);
1979
1986
forcedShowSender = true ;
1980
1987
}
1981
- check (model.items[i++ ]).isA <MessageListMessageItem >()
1982
- ..message.identicalTo (model.messages[j])
1983
- ..content.identicalTo (model.contents[j])
1988
+ if (j < model.messages.length) {
1989
+ check (model.items[i]).isA <MessageListMessageItem >()
1990
+ ..message.identicalTo (model.messages[j])
1991
+ ..content.identicalTo (model.contents[j]);
1992
+ } else {
1993
+ assert (false );
1994
+ }
1995
+ check (model.items[i++ ]).isA <MessageListMessageBaseItem >()
1984
1996
..showSender.equals (
1985
- forcedShowSender || model.messages [j].senderId != model.messages [j- 1 ].senderId)
1997
+ forcedShowSender || allMessages [j].senderId != allMessages [j- 1 ].senderId)
1986
1998
..isLastInBlock.equals (
1987
1999
i == model.items.length || switch (model.items[i]) {
1988
2000
MessageListMessageItem ()
0 commit comments