@@ -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 conversation = message.conversation;
76+ return conversation is StreamConversation && conversation.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 conversation = message.conversation;
111+ return conversation is StreamConversation
112+ && conversation.streamId == streamId && conversation.topic == topic;
111113 }
112114
113115 @override
@@ -263,11 +265,12 @@ 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+ final conversation = message.conversation;
270+ if (conversation is ! DmConversation ) return false ;
271+ if (conversation.allRecipientIds.length != allRecipientIds.length) return false ;
269272 int i = 0 ;
270- for (final userId in message .allRecipientIds) {
273+ for (final userId in conversation .allRecipientIds) {
271274 if (userId != allRecipientIds[i]) return false ;
272275 i++ ;
273276 }
@@ -307,7 +310,8 @@ class MentionsNarrow extends Narrow {
307310 const MentionsNarrow ();
308311
309312 @override
310- bool containsMessage (Message message) {
313+ bool containsMessage (MessageBase message) {
314+ if (message is ! Message ) return false ;
311315 return message.flags.any ((flag) {
312316 switch (flag) {
313317 case MessageFlag .mentioned:
@@ -346,7 +350,8 @@ class StarredMessagesNarrow extends Narrow {
346350 ApiNarrow apiEncode () => [ApiNarrowIs (IsOperand .starred)];
347351
348352 @override
349- bool containsMessage (Message message) {
353+ bool containsMessage (MessageBase message) {
354+ if (message is ! Message ) return false ;
350355 return message.flags.contains (MessageFlag .starred);
351356 }
352357
0 commit comments