Skip to content

Commit d5cc7fc

Browse files
committed
unreads: Exclude muted DM conversations in combined-feed and all-dm counts
1 parent 7168db2 commit d5cc7fc

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

lib/model/unreads.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,14 @@ class Unreads extends PerAccountStoreBase with ChangeNotifier {
228228
// TODO: Implement unreads handling?
229229
int countInKeywordSearchNarrow() => 0;
230230

231+
/// The aggregated unread count for DM conversations.
232+
///
233+
/// This excludes conversations that are considered muted,
234+
/// by [UserStore.shouldMuteDmConversation].
231235
int countInDms() {
232236
int c = 0;
233-
for (final messageIds in dms.values) {
237+
for (final MapEntry(key: narrow, value: messageIds) in dms.entries) {
238+
if (channelStore.shouldMuteDmConversation(narrow)) continue;
234239
c += messageIds.length;
235240
}
236241
return c;

test/model/unreads_test.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ void main() {
191191
await store.addSubscription(eg.subscription(stream2));
192192
await store.addSubscription(eg.subscription(stream3, isMuted: true));
193193
await store.setUserTopic(stream1, 'a', UserTopicVisibilityPolicy.muted);
194+
await store.setMutedUsers([eg.thirdUser.userId]);
194195
fillWithMessages([
195196
eg.streamMessage(stream: stream1, topic: 'a', flags: []),
196197
eg.streamMessage(stream: stream1, topic: 'b', flags: []),
@@ -200,7 +201,7 @@ void main() {
200201
eg.dmMessage(from: eg.otherUser, to: [eg.selfUser], flags: []),
201202
eg.dmMessage(from: eg.thirdUser, to: [eg.selfUser], flags: []),
202203
]);
203-
check(model.countInCombinedFeedNarrow()).equals(5);
204+
check(model.countInCombinedFeedNarrow()).equals(4);
204205
});
205206

206207
test('countInChannel/Narrow', () async {
@@ -274,12 +275,16 @@ void main() {
274275

275276
test('countInDms', () async {
276277
prepare();
278+
await store.setMutedUsers([eg.thirdUser.userId]);
277279
fillWithMessages([
280+
// No one is muted: don't exclude
278281
eg.dmMessage(from: eg.otherUser, to: [eg.selfUser], flags: []),
282+
// Everyone is muted: exclude
279283
eg.dmMessage(from: eg.thirdUser, to: [eg.selfUser], flags: []),
284+
// One is muted, one isn't: don't exclude
280285
eg.dmMessage(from: eg.thirdUser, to: [eg.selfUser, eg.otherUser], flags: []),
281286
]);
282-
check(model.countInDms()).equals(3);
287+
check(model.countInDms()).equals(2);
283288
});
284289
});
285290

0 commit comments

Comments
 (0)