Skip to content

Commit 80fc7e9

Browse files
committed
wip msglist: Handle update_message_flags events in model
1 parent e58ea8e commit 80fc7e9

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

lib/model/message_list.dart

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,38 @@ class MessageListView with ChangeNotifier, _MessageSequence {
341341
notifyListeners();
342342
}
343343

344+
void maybeUpdateMessageFlags(UpdateMessageFlagsEvent event) {
345+
final List<Message> messagesToProcess;
346+
if (event.all) {
347+
messagesToProcess = messages;
348+
} else {
349+
messagesToProcess = [];
350+
for (final messageId in event.messages) {
351+
// TODO(perf) could be more efficient?
352+
final index = _findMessageWithId(messageId);
353+
if (index != -1) {
354+
messagesToProcess.add(messages[index]);
355+
}
356+
}
357+
}
358+
if (messagesToProcess.isEmpty) {
359+
return;
360+
}
361+
362+
switch (event) {
363+
case UpdateMessageFlagsAddEvent():
364+
for (final message in messagesToProcess) {
365+
message.flags.add(event.flag);
366+
}
367+
case UpdateMessageFlagsRemoveEvent():
368+
for (final message in messagesToProcess) {
369+
message.flags.remove(event.flag);
370+
}
371+
}
372+
373+
notifyListeners();
374+
}
375+
344376
void maybeUpdateMessageReactions(ReactionEvent event) {
345377
final index = _findMessageWithId(event.messageId);
346378
if (index == -1) {

lib/model/store.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,9 @@ class PerAccountStore extends ChangeNotifier {
311311
// TODO handle
312312
} else if (event is UpdateMessageFlagsEvent) {
313313
assert(debugLog("server event: update_message_flags/${event.op} ${event.flag.toJson()}"));
314-
// TODO handle
314+
for (final view in _messageListViews) {
315+
view.maybeUpdateMessageFlags(event);
316+
}
315317
} else if (event is ReactionEvent) {
316318
assert(debugLog("server event: reaction/${event.op}"));
317319
for (final view in _messageListViews) {

0 commit comments

Comments
 (0)