@@ -19,7 +19,7 @@ sealed class Narrow {
19
19
/// This does not necessarily mean the message list would show this message
20
20
/// when navigated to this narrow; in particular it does not address the
21
21
/// question of whether the stream or topic, or the sending user, is muted.
22
- bool containsMessage (Message message);
22
+ bool containsMessage (MessageBase message);
23
23
24
24
/// This narrow, expressed as an [ApiNarrow] .
25
25
ApiNarrow apiEncode ();
@@ -47,7 +47,7 @@ class CombinedFeedNarrow extends Narrow {
47
47
const CombinedFeedNarrow ();
48
48
49
49
@override
50
- bool containsMessage (Message message) {
50
+ bool containsMessage (MessageBase message) {
51
51
return true ;
52
52
}
53
53
@@ -71,8 +71,9 @@ class ChannelNarrow extends Narrow {
71
71
final int streamId;
72
72
73
73
@override
74
- bool containsMessage (Message message) {
75
- return message is StreamMessage && message.streamId == streamId;
74
+ bool containsMessage (MessageBase message) {
75
+ final conversation = message.conversation;
76
+ return conversation is StreamConversation && conversation.streamId == streamId;
76
77
}
77
78
78
79
@override
@@ -105,9 +106,10 @@ class TopicNarrow extends Narrow implements SendableNarrow {
105
106
TopicNarrow sansWith () => TopicNarrow (streamId, topic);
106
107
107
108
@override
108
- bool containsMessage (Message message) {
109
- return (message is StreamMessage
110
- && message.streamId == streamId && message.topic == topic);
109
+ bool containsMessage (MessageBase message) {
110
+ final conversation = message.conversation;
111
+ return conversation is StreamConversation
112
+ && conversation.streamId == streamId && conversation.topic == topic;
111
113
}
112
114
113
115
@override
@@ -263,11 +265,12 @@ class DmNarrow extends Narrow implements SendableNarrow {
263
265
late final String _key = otherRecipientIds.join (',' );
264
266
265
267
@override
266
- bool containsMessage (Message message) {
267
- if (message is ! DmMessage ) return false ;
268
- if (message.allRecipientIds.length != allRecipientIds.length) return false ;
268
+ bool containsMessage (MessageBase message) {
269
+ final conversation = message.conversation;
270
+ if (conversation is ! DmConversation ) return false ;
271
+ if (conversation.allRecipientIds.length != allRecipientIds.length) return false ;
269
272
int i = 0 ;
270
- for (final userId in message .allRecipientIds) {
273
+ for (final userId in conversation .allRecipientIds) {
271
274
if (userId != allRecipientIds[i]) return false ;
272
275
i++ ;
273
276
}
@@ -307,7 +310,8 @@ class MentionsNarrow extends Narrow {
307
310
const MentionsNarrow ();
308
311
309
312
@override
310
- bool containsMessage (Message message) {
313
+ bool containsMessage (MessageBase message) {
314
+ if (message is ! Message ) return false ;
311
315
return message.flags.any ((flag) {
312
316
switch (flag) {
313
317
case MessageFlag .mentioned:
@@ -346,7 +350,8 @@ class StarredMessagesNarrow extends Narrow {
346
350
ApiNarrow apiEncode () => [ApiNarrowIs (IsOperand .starred)];
347
351
348
352
@override
349
- bool containsMessage (Message message) {
353
+ bool containsMessage (MessageBase message) {
354
+ if (message is ! Message ) return false ;
350
355
return message.flags.contains (MessageFlag .starred);
351
356
}
352
357
0 commit comments