Skip to content

Commit dc24c0c

Browse files
committed
unreads [nfc]: Return removed messages from _removeAllInStreamTopic
Signed-off-by: Zixuan James Li <[email protected]>
1 parent eb363b1 commit dc24c0c

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

lib/model/unreads.dart

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -488,20 +488,28 @@ class Unreads extends ChangeNotifier {
488488
}
489489
}
490490

491-
void _removeAllInStreamTopic(Set<int> incomingMessageIds, int streamId, TopicName topic) {
491+
QueueList<int>? _removeAllInStreamTopic(Set<int> incomingMessageIds, int streamId, TopicName topic) {
492492
final topics = streams[streamId];
493-
if (topics == null) return;
493+
if (topics == null) return null;
494494
final messageIds = topics[topic];
495-
if (messageIds == null) return;
495+
if (messageIds == null) return null;
496496

497497
// ([QueueList] doesn't have a `removeAll`)
498-
messageIds.removeWhere((id) => incomingMessageIds.contains(id));
498+
final removedMessageIds = QueueList<int>();
499+
messageIds.removeWhere((id) {
500+
if (incomingMessageIds.contains(id)) {
501+
removedMessageIds.add(id);
502+
return true;
503+
}
504+
return false;
505+
});
499506
if (messageIds.isEmpty) {
500507
topics.remove(topic);
501508
if (topics.isEmpty) {
502509
streams.remove(streamId);
503510
}
504511
}
512+
return removedMessageIds;
505513
}
506514

507515
// TODO use efficient model lookups

0 commit comments

Comments
 (0)