Skip to content

Commit 8b15e2b

Browse files
committed
unreads [nfc]: Enhance performance in _isPresentInStreams
1 parent 5c0a508 commit 8b15e2b

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

lib/model/unreads.dart

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ class Unreads extends ChangeNotifier {
257257
final bool isRead = event.flags.contains(MessageFlag.read);
258258
assert(() {
259259
if (!oldUnreadsMissing && !event.messageIds.every((messageId) {
260-
final isUnreadLocally = _slowIsPresentInDms(messageId) || _slowIsPresentInStreams(messageId);
260+
final isUnreadLocally = _slowIsPresentInDms(messageId) || _isPresentInStreams(messageId);
261261
return isUnreadLocally == !isRead;
262262
})) {
263263
// If this happens, then either:
@@ -333,7 +333,7 @@ class Unreads extends ChangeNotifier {
333333
case UpdateMessageFlagsAddEvent():
334334
mentions.addAll(
335335
event.messages.where(
336-
(messageId) => _slowIsPresentInStreams(messageId) || _slowIsPresentInDms(messageId),
336+
(messageId) => _isPresentInStreams(messageId) || _slowIsPresentInDms(messageId),
337337
),
338338
);
339339

@@ -432,13 +432,8 @@ class Unreads extends ChangeNotifier {
432432
notifyListeners();
433433
}
434434

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);
442437
}
443438

444439
void _addLastInStreamTopic(int messageId, int streamId, String topic) {

0 commit comments

Comments
 (0)