Skip to content

Commit 9b2013b

Browse files
committed
narrow [nfc]: Make containsMessage support MessageBase
1 parent ca6b088 commit 9b2013b

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

lib/model/narrow.dart

Lines changed: 17 additions & 13 deletions
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 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
@@ -261,11 +263,11 @@ class DmNarrow extends Narrow implements SendableNarrow {
261263
late final String _key = otherRecipientIds.join(',');
262264

263265
@override
264-
bool containsMessage(Message message) {
265-
if (message is! DmMessage) return false;
266-
if (message.allRecipientIds.length != allRecipientIds.length) return false;
266+
bool containsMessage(MessageBase message) {
267+
if (message is! MessageBase<DmRecipient>) return false;
268+
if (message.recipient.allRecipientIds.length != allRecipientIds.length) return false;
267269
int i = 0;
268-
for (final userId in message.allRecipientIds) {
270+
for (final userId in message.recipient.allRecipientIds) {
269271
if (userId != allRecipientIds[i]) return false;
270272
i++;
271273
}
@@ -305,7 +307,8 @@ class MentionsNarrow extends Narrow {
305307
const MentionsNarrow();
306308

307309
@override
308-
bool containsMessage(Message message) {
310+
bool containsMessage(MessageBase message) {
311+
if (message is! Message) return false;
309312
return message.flags.any((flag) {
310313
switch (flag) {
311314
case MessageFlag.mentioned:
@@ -344,7 +347,8 @@ class StarredMessagesNarrow extends Narrow {
344347
ApiNarrow apiEncode() => [ApiNarrowIs(IsOperand.starred)];
345348

346349
@override
347-
bool containsMessage(Message message) {
350+
bool containsMessage(MessageBase message) {
351+
if (message is! Message) return false;
348352
return message.flags.contains(MessageFlag.starred);
349353
}
350354

0 commit comments

Comments
 (0)