Skip to content

Commit 82f7876

Browse files
committed
msglist: Handle update_message_flags events in model
After this, we'll be able to show a message's flags in the UI, such as unread markers (#79).
1 parent 78915f3 commit 82f7876

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

lib/model/message_list.dart

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,35 @@ class MessageListView with ChangeNotifier, _MessageSequence {
420420
notifyListeners();
421421
}
422422

423+
void maybeUpdateMessageFlags(UpdateMessageFlagsEvent event) {
424+
final isAdd = switch (event) {
425+
UpdateMessageFlagsAddEvent() => true,
426+
UpdateMessageFlagsRemoveEvent() => false,
427+
};
428+
429+
bool didUpdateAny = false;
430+
if (event.all) {
431+
for (final message in messages) {
432+
(isAdd ? message.flags.add : message.flags.remove).call(event.flag);
433+
didUpdateAny |= true;
434+
}
435+
} else {
436+
for (final messageId in event.messages) {
437+
final index = _findMessageWithId(messageId);
438+
if (index != -1) {
439+
final message = messages[index];
440+
(isAdd ? message.flags.add : message.flags.remove).call(event.flag);
441+
didUpdateAny |= true;
442+
}
443+
}
444+
}
445+
if (!didUpdateAny) {
446+
return;
447+
}
448+
449+
notifyListeners();
450+
}
451+
423452
void maybeUpdateMessageReactions(ReactionEvent event) {
424453
final index = _findMessageWithId(event.messageId);
425454
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)