Skip to content

Commit 4e908d0

Browse files
committed
narrow [nfc]: Make containsMessage support MessageBase
1 parent 41104fa commit 4e908d0

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

lib/model/narrow.dart

+18-13
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)