@@ -287,6 +287,12 @@ class PerAccountStore extends ChangeNotifier with StreamStore {
287
287
288
288
final Map <int , User > users;
289
289
290
+ Map <int , Set <int >> get streamUserIds => {..._streamUserIds};
291
+ final Map <int , Set <int >> _streamUserIds = {};
292
+
293
+ Set <int > get dmUserIds => {..._dmUserIds};
294
+ Set <int > _dmUserIds = {};
295
+
290
296
////////////////////////////////
291
297
// Streams, topics, and stuff about them.
292
298
@@ -353,6 +359,22 @@ class PerAccountStore extends ChangeNotifier with StreamStore {
353
359
super .dispose ();
354
360
}
355
361
362
+ void getMessageUsers (Message message) {
363
+ if (message is StreamMessage ) {
364
+ Set <int > userIds = _streamUserIds[message.streamId] ?? {};
365
+ if (message.senderId == selfUserId) return ;
366
+ userIds = {message.senderId}..addAll (userIds);
367
+ _streamUserIds[message.streamId] = userIds;
368
+ } else {
369
+ final desiredId = message.senderId == selfUserId
370
+ ? message.recipientId
371
+ : message.senderId;
372
+ _dmUserIds = {desiredId}..addAll (_dmUserIds);
373
+ }
374
+ debugLog ('streamUsers: $_streamUserIds ' );
375
+ debugLog ('dmUsers: $_dmUserIds ' );
376
+ }
377
+
356
378
void handleEvent (Event event) {
357
379
if (event is HeartbeatEvent ) {
358
380
assert (debugLog ("server event: heartbeat" ));
@@ -436,6 +458,7 @@ class PerAccountStore extends ChangeNotifier with StreamStore {
436
458
notifyListeners ();
437
459
} else if (event is MessageEvent ) {
438
460
assert (debugLog ("server event: message ${jsonEncode (event .message .toJson ())}" ));
461
+ getMessageUsers (event.message);
439
462
recentDmConversationsView.handleMessageEvent (event);
440
463
for (final view in _messageListViews) {
441
464
view.maybeAddMessage (event.message);
0 commit comments