@@ -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