@@ -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 recipient = message.recipient;
76+ return recipient is StreamRecipient && recipient.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 recipient = message.recipient;
111+ return recipient is StreamRecipient
112+ && recipient.streamId == streamId && recipient.topic == topic;
111113 }
112114
113115 @override
@@ -263,11 +265,11 @@ class DmNarrow extends Narrow implements SendableNarrow {
263265 late final String _key = otherRecipientIds.join (',' );
264266
265267 @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+ if (message is ! MessageBase < DmRecipient > ) return false ;
270+ if (message.recipient. allRecipientIds.length != allRecipientIds.length) return false ;
269271 int i = 0 ;
270- for (final userId in message.allRecipientIds) {
272+ for (final userId in message.recipient. allRecipientIds) {
271273 if (userId != allRecipientIds[i]) return false ;
272274 i++ ;
273275 }
@@ -307,7 +309,8 @@ class MentionsNarrow extends Narrow {
307309 const MentionsNarrow ();
308310
309311 @override
310- bool containsMessage (Message message) {
312+ bool containsMessage (MessageBase message) {
313+ if (message is ! Message ) return false ;
311314 return message.flags.any ((flag) {
312315 switch (flag) {
313316 case MessageFlag .mentioned:
@@ -346,7 +349,8 @@ class StarredMessagesNarrow extends Narrow {
346349 ApiNarrow apiEncode () => [ApiNarrowIs (IsOperand .starred)];
347350
348351 @override
349- bool containsMessage (Message message) {
352+ bool containsMessage (MessageBase message) {
353+ if (message is ! Message ) return false ;
350354 return message.flags.contains (MessageFlag .starred);
351355 }
352356
0 commit comments