@@ -19,7 +19,7 @@ sealed class Narrow {
1919 /// This does not necessarily mean the message list would show this message
2020 /// when navigated to this narrow; in particular it does not address the
2121 /// question of whether the stream or topic, or the sending user, is muted.
22- bool containsMessage (Message message);
22+ bool containsMessage (MessageBase message);
2323
2424 /// This narrow, expressed as an [ApiNarrow] .
2525 ApiNarrow apiEncode ();
@@ -47,7 +47,7 @@ class CombinedFeedNarrow extends Narrow {
4747 const CombinedFeedNarrow ();
4848
4949 @override
50- bool containsMessage (Message message) {
50+ bool containsMessage (MessageBase message) {
5151 return true ;
5252 }
5353
@@ -71,8 +71,9 @@ class ChannelNarrow extends Narrow {
7171 final int streamId;
7272
7373 @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;
7677 }
7778
7879 @override
@@ -105,9 +106,10 @@ class TopicNarrow extends Narrow implements SendableNarrow {
105106 TopicNarrow sansWith () => TopicNarrow (streamId, topic);
106107
107108 @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;
111113 }
112114
113115 @override
@@ -262,11 +264,12 @@ class DmNarrow extends Narrow implements SendableNarrow {
262264 late final String _key = otherRecipientIds.join (',' );
263265
264266 @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 ;
268271 int i = 0 ;
269- for (final userId in message. destination.userIds) {
272+ for (final userId in destination.userIds) {
270273 if (userId != allRecipientIds[i]) return false ;
271274 i++ ;
272275 }
@@ -306,7 +309,8 @@ class MentionsNarrow extends Narrow {
306309 const MentionsNarrow ();
307310
308311 @override
309- bool containsMessage (Message message) {
312+ bool containsMessage (MessageBase message) {
313+ if (message is ! Message ) return false ;
310314 return message.flags.any ((flag) {
311315 switch (flag) {
312316 case MessageFlag .mentioned:
@@ -345,7 +349,8 @@ class StarredMessagesNarrow extends Narrow {
345349 ApiNarrow apiEncode () => [ApiNarrowIs (IsOperand .starred)];
346350
347351 @override
348- bool containsMessage (Message message) {
352+ bool containsMessage (MessageBase message) {
353+ if (message is ! Message ) return false ;
349354 return message.flags.contains (MessageFlag .starred);
350355 }
351356
0 commit comments