Skip to content

Commit 8fb007f

Browse files
committed
wip unreads: Handle events.
Signed-off-by: Zixuan James Li <[email protected]>
1 parent e376b72 commit 8fb007f

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

lib/model/unreads.dart

+17-1
Original file line numberDiff line numberDiff line change
@@ -311,14 +311,26 @@ class Unreads extends ChangeNotifier {
311311

312312
void handleUpdateMessageFlagsEvent(UpdateMessageFlagsEvent event) {
313313
switch (event.flag) {
314-
case MessageFlag.starred:
315314
case MessageFlag.collapsed:
316315
case MessageFlag.hasAlertWord:
317316
case MessageFlag.historical:
318317
case MessageFlag.unknown:
319318
// These are irrelevant.
320319
return;
321320

321+
case MessageFlag.starred:
322+
switch (event) {
323+
case UpdateMessageFlagsAddEvent():
324+
starredMessages.addAll(
325+
event.messages.where(
326+
(messageId) => _slowIsPresentInStreams(messageId) || _slowIsPresentInDms(messageId),
327+
),
328+
);
329+
330+
case UpdateMessageFlagsRemoveEvent():
331+
starredMessages.removeAll(event.messages);
332+
}
333+
322334
case MessageFlag.mentioned:
323335
case MessageFlag.wildcardMentioned:
324336
// Empirically, we don't seem to get these events when a message is edited
@@ -350,10 +362,12 @@ class Unreads extends ChangeNotifier {
350362
streams.clear();
351363
dms.clear();
352364
mentions.clear();
365+
starredMessages.clear();
353366
oldUnreadsMissing = false;
354367
} else {
355368
final messageIdsSet = Set.of(event.messages);
356369
mentions.removeAll(messageIdsSet);
370+
starredMessages.removeAll(messageIdsSet);
357371
_slowRemoveAllInStreams(messageIdsSet);
358372
_slowRemoveAllInDms(messageIdsSet);
359373
}
@@ -371,6 +385,8 @@ class Unreads extends ChangeNotifier {
371385
if (detail.mentioned == true) {
372386
mentions.add(messageId);
373387
}
388+
// TODO support starred messages mark as unread
389+
// if (event.flag == MessageFlag.read && )
374390
switch (detail.type) {
375391
case MessageType.stream:
376392
final topics = (newlyUnreadInStreams[detail.streamId!] ??= {});

0 commit comments

Comments
 (0)