From 895ba4deebba29e0e0f700f34b451e62dcbb05cd Mon Sep 17 00:00:00 2001 From: Khader M Khudair Date: Fri, 9 Aug 2024 21:18:49 +0300 Subject: [PATCH] unreads [nfc]: Enhance performance in _isPresentInStreams --- lib/model/unreads.dart | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/model/unreads.dart b/lib/model/unreads.dart index d0431d3074..b3eda6e3c7 100644 --- a/lib/model/unreads.dart +++ b/lib/model/unreads.dart @@ -259,7 +259,7 @@ class Unreads extends ChangeNotifier { final bool isRead = event.flags.contains(MessageFlag.read); assert(() { if (!oldUnreadsMissing && !event.messageIds.every((messageId) { - final isUnreadLocally = _slowIsPresentInDms(messageId) || _slowIsPresentInStreams(messageId); + final isUnreadLocally = _slowIsPresentInDms(messageId) || _isPresentInStreams(messageId); return isUnreadLocally == !isRead; })) { // If this happens, then either: @@ -335,7 +335,7 @@ class Unreads extends ChangeNotifier { case UpdateMessageFlagsAddEvent(): mentions.addAll( event.messages.where( - (messageId) => _slowIsPresentInStreams(messageId) || _slowIsPresentInDms(messageId), + (messageId) => _isPresentInStreams(messageId) || _slowIsPresentInDms(messageId), ), ); @@ -434,13 +434,8 @@ class Unreads extends ChangeNotifier { notifyListeners(); } - // TODO use efficient lookups - bool _slowIsPresentInStreams(int messageId) { - return streams.values.any( - (topics) => topics.values.any( - (messageIds) => messageIds.contains(messageId), - ), - ); + bool _isPresentInStreams(int messageId) { + return _reverseStreamsLookup.containsKey(messageId); } void _addLastInStreamTopic(int messageId, int streamId, String topic) {