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