Skip to content

Commit eca8af9

Browse files
committed
recent_senders [nfc]: Add and revise some docs
1 parent 73c827c commit eca8af9

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

lib/model/recent_senders.dart

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import '../api/model/events.dart';
55
import '../api/model/model.dart';
66
import 'algorithms.dart';
77

8-
/// A data structure to keep track of stream and topic messages of users (senders).
8+
/// Tracks the latest messages sent by each user, in each stream and topic.
99
///
1010
/// Use [latestMessageIdOfSenderInStream] and [latestMessageIdOfSenderInTopic]
11-
/// to get the relevant data.
11+
/// for queries.
1212
class RecentSenders {
1313
// streamSenders[streamId][senderId] = MessageIdTracker
1414
@visibleForTesting
@@ -18,21 +18,24 @@ class RecentSenders {
1818
@visibleForTesting
1919
final Map<int, Map<String, Map<int, MessageIdTracker>>> topicSenders = {};
2020

21+
/// The latest message the given user sent to the given stream,
22+
/// or null if no such message is known.
2123
int? latestMessageIdOfSenderInStream({
2224
required int streamId,
2325
required int senderId,
2426
}) => streamSenders[streamId]?[senderId]?.maxId;
2527

28+
/// The latest message the given user sent to the given topic,
29+
/// or null if no such message is known.
2630
int? latestMessageIdOfSenderInTopic({
2731
required int streamId,
2832
required String topic,
2933
required int senderId,
3034
}) => topicSenders[streamId]?[topic]?[senderId]?.maxId;
3135

32-
/// Records the necessary data from each message if it is a [StreamMessage].
36+
/// Records the necessary data from a batch of just-fetched messages.
3337
///
34-
/// [messages] should be sorted by [id] ascendingly, which are, the way app
35-
/// receives and handles messages.
38+
/// The messages must be sorted by [Message.id] ascending.
3639
void handleMessages(List<Message> messages) {
3740
final messagesByUserInStream = <(int, int), QueueList<int>>{};
3841
final messagesByUserInTopic = <(int, String, int), QueueList<int>>{};
@@ -55,9 +58,7 @@ class RecentSenders {
5558
}
5659
}
5760

58-
/// Records the necessary data from [message] if it is a [StreamMessage].
59-
///
60-
/// If [message] is not a [StreamMessage], this is a no-op.
61+
/// Records the necessary data from a new message.
6162
void handleMessage(Message message) {
6263
if (message is! StreamMessage) return;
6364
final StreamMessage(:streamId, :topic, :senderId, id: int messageId) = message;

0 commit comments

Comments
 (0)