@@ -257,7 +257,7 @@ class Unreads extends ChangeNotifier {
257
257
final bool isRead = event.flags.contains (MessageFlag .read);
258
258
assert (() {
259
259
if (! oldUnreadsMissing && ! event.messageIds.every ((messageId) {
260
- final isUnreadLocally = _slowIsPresentInDms (messageId) || _slowIsPresentInStreams (messageId);
260
+ final isUnreadLocally = _slowIsPresentInDms (messageId) || _isPresentInStreams (messageId);
261
261
return isUnreadLocally == ! isRead;
262
262
})) {
263
263
// If this happens, then either:
@@ -333,7 +333,7 @@ class Unreads extends ChangeNotifier {
333
333
case UpdateMessageFlagsAddEvent ():
334
334
mentions.addAll (
335
335
event.messages.where (
336
- (messageId) => _slowIsPresentInStreams (messageId) || _slowIsPresentInDms (messageId),
336
+ (messageId) => _isPresentInStreams (messageId) || _slowIsPresentInDms (messageId),
337
337
),
338
338
);
339
339
@@ -432,13 +432,8 @@ class Unreads extends ChangeNotifier {
432
432
notifyListeners ();
433
433
}
434
434
435
- // TODO use efficient lookups
436
- bool _slowIsPresentInStreams (int messageId) {
437
- return streams.values.any (
438
- (topics) => topics.values.any (
439
- (messageIds) => messageIds.contains (messageId),
440
- ),
441
- );
435
+ bool _isPresentInStreams (int messageId) {
436
+ return _reverseStreamsLookup.containsKey (messageId);
442
437
}
443
438
444
439
void _addLastInStreamTopic (int messageId, int streamId, String topic) {
0 commit comments