@@ -2153,15 +2153,21 @@ void checkInvariants(MessageListView model) {
2153
2153
2154
2154
for (final message in model.messages) {
2155
2155
check (model.store.messages)[message.id].isNotNull ().identicalTo (message);
2156
+ }
2157
+
2158
+ final allMessages = < MessageBase <Conversation >> [...model.messages];
2159
+
2160
+ for (final message in allMessages) {
2156
2161
check (model.narrow.containsMessage (message)).isTrue ();
2157
2162
2158
- if (message is ! StreamMessage ) continue ;
2163
+ if (message is ! MessageBase <StreamConversation >) continue ;
2164
+ final conversation = message.conversation;
2159
2165
switch (model.narrow) {
2160
2166
case CombinedFeedNarrow ():
2161
- check (model.store.isTopicVisible (message .streamId, message .topic))
2167
+ check (model.store.isTopicVisible (conversation .streamId, conversation .topic))
2162
2168
.isTrue ();
2163
2169
case ChannelNarrow ():
2164
- check (model.store.isTopicVisibleInStream (message .streamId, message .topic))
2170
+ check (model.store.isTopicVisibleInStream (conversation .streamId, conversation .topic))
2165
2171
.isTrue ();
2166
2172
case TopicNarrow ():
2167
2173
case DmNarrow ():
@@ -2204,23 +2210,28 @@ void checkInvariants(MessageListView model) {
2204
2210
}
2205
2211
2206
2212
int i = 0 ;
2207
- for (int j = 0 ; j < model.messages .length; j++ ) {
2213
+ for (int j = 0 ; j < allMessages .length; j++ ) {
2208
2214
bool forcedShowSender = false ;
2209
2215
if (j == 0
2210
- || ! haveSameRecipient (model.messages [j- 1 ], model.messages [j])) {
2216
+ || ! haveSameRecipient (allMessages [j- 1 ], allMessages [j])) {
2211
2217
check (model.items[i++ ]).isA <MessageListRecipientHeaderItem >()
2212
- .message.identicalTo (model.messages [j]);
2218
+ .message.identicalTo (allMessages [j]);
2213
2219
forcedShowSender = true ;
2214
- } else if (! messagesSameDay (model.messages [j- 1 ], model.messages [j])) {
2220
+ } else if (! messagesSameDay (allMessages [j- 1 ], allMessages [j])) {
2215
2221
check (model.items[i++ ]).isA <MessageListDateSeparatorItem >()
2216
- .message.identicalTo (model.messages [j]);
2222
+ .message.identicalTo (allMessages [j]);
2217
2223
forcedShowSender = true ;
2218
2224
}
2219
- check (model.items[i++ ]).isA <MessageListMessageItem >()
2220
- ..message.identicalTo (model.messages[j])
2221
- ..content.identicalTo (model.contents[j])
2225
+ if (j < model.messages.length) {
2226
+ check (model.items[i]).isA <MessageListMessageItem >()
2227
+ ..message.identicalTo (model.messages[j])
2228
+ ..content.identicalTo (model.contents[j]);
2229
+ } else {
2230
+ assert (false );
2231
+ }
2232
+ check (model.items[i++ ]).isA <MessageListMessageBaseItem >()
2222
2233
..showSender.equals (
2223
- forcedShowSender || model.messages [j].senderId != model.messages [j- 1 ].senderId)
2234
+ forcedShowSender || allMessages [j].senderId != allMessages [j- 1 ].senderId)
2224
2235
..isLastInBlock.equals (
2225
2236
i == model.items.length || switch (model.items[i]) {
2226
2237
MessageListMessageItem ()
0 commit comments