@@ -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 destination = message.destination;
76
+ return destination is StreamDestination && destination.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 destination = message.destination;
111
+ return destination is StreamDestination
112
+ && destination.streamId == streamId && destination.topic == topic;
111
113
}
112
114
113
115
@override
@@ -262,11 +264,12 @@ class DmNarrow extends Narrow implements SendableNarrow {
262
264
late final String _key = otherRecipientIds.join (',' );
263
265
264
266
@override
265
- bool containsMessage (Message message) {
266
- if (message is ! DmMessage ) return false ;
267
- if (message.destination.userIds.length != allRecipientIds.length) return false ;
267
+ bool containsMessage (MessageBase message) {
268
+ final destination = message.destination;
269
+ if (destination is ! DmDestination ) return false ;
270
+ if (destination.userIds.length != allRecipientIds.length) return false ;
268
271
int i = 0 ;
269
- for (final userId in message. destination.userIds) {
272
+ for (final userId in destination.userIds) {
270
273
if (userId != allRecipientIds[i]) return false ;
271
274
i++ ;
272
275
}
@@ -306,7 +309,8 @@ class MentionsNarrow extends Narrow {
306
309
const MentionsNarrow ();
307
310
308
311
@override
309
- bool containsMessage (Message message) {
312
+ bool containsMessage (MessageBase message) {
313
+ if (message is ! Message ) return false ;
310
314
return message.flags.any ((flag) {
311
315
switch (flag) {
312
316
case MessageFlag .mentioned:
@@ -345,7 +349,8 @@ class StarredMessagesNarrow extends Narrow {
345
349
ApiNarrow apiEncode () => [ApiNarrowIs (IsOperand .starred)];
346
350
347
351
@override
348
- bool containsMessage (Message message) {
352
+ bool containsMessage (MessageBase message) {
353
+ if (message is ! Message ) return false ;
349
354
return message.flags.contains (MessageFlag .starred);
350
355
}
351
356
0 commit comments