@@ -17,6 +17,7 @@ import 'autocomplete.dart';
17
17
import 'database.dart' ;
18
18
import 'message_list.dart' ;
19
19
import 'recent_dm_conversations.dart' ;
20
+ import 'unreads.dart' ;
20
21
21
22
export 'package:drift/drift.dart' show Value;
22
23
export 'database.dart' show Account, AccountsCompanion;
@@ -154,6 +155,7 @@ class PerAccountStore extends ChangeNotifier {
154
155
realmDefaultExternalAccounts = initialSnapshot.realmDefaultExternalAccounts,
155
156
customProfileFields = _sortCustomProfileFields (initialSnapshot.customProfileFields),
156
157
userSettings = initialSnapshot.userSettings,
158
+ unreads = Unreads (initial: initialSnapshot.unreadMsgs, selfUserId: account.userId),
157
159
users = Map .fromEntries (
158
160
initialSnapshot.realmUsers
159
161
.followedBy (initialSnapshot.realmNonActiveUsers)
@@ -181,6 +183,7 @@ class PerAccountStore extends ChangeNotifier {
181
183
182
184
// Data attached to the self-account on the realm.
183
185
final UserSettings ? userSettings; // TODO(server-5)
186
+ final Unreads unreads;
184
187
185
188
// Users and data about them.
186
189
final Map <int , User > users;
@@ -306,19 +309,23 @@ class PerAccountStore extends ChangeNotifier {
306
309
for (final view in _messageListViews) {
307
310
view.maybeAddMessage (event.message);
308
311
}
312
+ unreads.handleMessageEvent (event);
309
313
} else if (event is UpdateMessageEvent ) {
310
314
assert (debugLog ("server event: update_message ${event .messageId }" ));
311
315
for (final view in _messageListViews) {
312
316
view.maybeUpdateMessage (event);
313
317
}
318
+ unreads.handleUpdateMessageEvent (event);
314
319
} else if (event is DeleteMessageEvent ) {
315
320
assert (debugLog ("server event: delete_message ${event .messageIds }" ));
316
- // TODO handle
321
+ // TODO handle in message lists
322
+ unreads.handleDeleteMessageEvent (event);
317
323
} else if (event is UpdateMessageFlagsEvent ) {
318
324
assert (debugLog ("server event: update_message_flags/${event .op } ${event .flag .toJson ()}" ));
319
325
for (final view in _messageListViews) {
320
326
view.maybeUpdateMessageFlags (event);
321
327
}
328
+ unreads.handleUpdateMessageFlagsEvent (event);
322
329
} else if (event is ReactionEvent ) {
323
330
assert (debugLog ("server event: reaction/${event .op }" ));
324
331
for (final view in _messageListViews) {
0 commit comments