@@ -8,6 +8,7 @@ import '../api/model/model.dart';
8
8
import '../api/model/events.dart' ;
9
9
import 'narrow.dart' ;
10
10
import 'store.dart' ;
11
+ import 'user.dart' ;
11
12
12
13
/// A view-model for the recent-DM-conversations UI.
13
14
///
@@ -17,7 +18,9 @@ class RecentDmConversationsView extends PerAccountStoreBase with ChangeNotifier
17
18
factory RecentDmConversationsView ({
18
19
required CorePerAccountStore core,
19
20
required List <RecentDmConversation > initial,
21
+ required UserStore userStore,
20
22
}) {
23
+ initial = _filterRecentDmConversations (initial, userStore);
21
24
final entries = initial.map ((conversation) => MapEntry (
22
25
DmNarrow .ofRecentDmConversation (conversation, selfUserId: core.selfUserId),
23
26
conversation.maxMessageId,
@@ -35,18 +38,32 @@ class RecentDmConversationsView extends PerAccountStoreBase with ChangeNotifier
35
38
36
39
return RecentDmConversationsView ._(
37
40
core: core,
41
+ userStore: userStore,
38
42
map: Map .fromEntries (entries),
39
43
sorted: QueueList .from (entries.map ((e) => e.key)),
40
44
latestMessagesByRecipient: latestMessagesByRecipient,
41
45
);
42
46
}
43
47
48
+ static List <RecentDmConversation > _filterRecentDmConversations (
49
+ List <RecentDmConversation > recentDms,
50
+ UserStore userStore,
51
+ ) {
52
+ return recentDms
53
+ .where ((conversation) =>
54
+ conversation.userIds.any ((id) => ! userStore.isUserMuted (id)))
55
+ .toList ();
56
+ }
57
+
44
58
RecentDmConversationsView ._({
45
59
required super .core,
60
+ required UserStore userStore,
46
61
required this .map,
47
62
required this .sorted,
48
63
required this .latestMessagesByRecipient,
49
- });
64
+ }) : _userStore = userStore;
65
+
66
+ final UserStore _userStore;
50
67
51
68
/// The latest message ID in each conversation.
52
69
final Map <DmNarrow , int > map;
@@ -158,4 +175,6 @@ class RecentDmConversationsView extends PerAccountStoreBase with ChangeNotifier
158
175
// TODO update from messages loaded in message lists. When doing so,
159
176
// review handleMessageEvent so it acknowledges the subtle races that can
160
177
// happen when taking data from outside the event system.
178
+
179
+ void handleMutedUsersEvent (MutedUsersEvent event) {}
161
180
}
0 commit comments