Skip to content

Commit 712c2d9

Browse files
committed
narrow [nfc]: Make containsMessage support MessageBase
1 parent 2649bc6 commit 712c2d9

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 destination = message.destination;
76+
return destination is StreamDestination && destination.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 destination = message.destination;
111+
return destination is StreamDestination
112+
&& destination.streamId == streamId && destination.topic == topic;
111113
}
112114

113115
@override
@@ -262,11 +264,12 @@ class DmNarrow extends Narrow implements SendableNarrow {
262264
late final String _key = otherRecipientIds.join(',');
263265

264266
@override
265-
bool containsMessage(Message message) {
266-
if (message is! DmMessage) return false;
267-
if (message.destination.userIds.length != allRecipientIds.length) return false;
267+
bool containsMessage(MessageBase message) {
268+
final destination = message.destination;
269+
if (destination is! DmDestination) return false;
270+
if (destination.userIds.length != allRecipientIds.length) return false;
268271
int i = 0;
269-
for (final userId in message.destination.userIds) {
272+
for (final userId in destination.userIds) {
270273
if (userId != allRecipientIds[i]) return false;
271274
i++;
272275
}
@@ -306,7 +309,8 @@ class MentionsNarrow extends Narrow {
306309
const MentionsNarrow();
307310

308311
@override
309-
bool containsMessage(Message message) {
312+
bool containsMessage(MessageBase message) {
313+
if (message is! Message) return false;
310314
return message.flags.any((flag) {
311315
switch (flag) {
312316
case MessageFlag.mentioned:
@@ -345,7 +349,8 @@ class StarredMessagesNarrow extends Narrow {
345349
ApiNarrow apiEncode() => [ApiNarrowIs(IsOperand.starred)];
346350

347351
@override
348-
bool containsMessage(Message message) {
352+
bool containsMessage(MessageBase message) {
353+
if (message is! Message) return false;
349354
return message.flags.contains(MessageFlag.starred);
350355
}
351356

0 commit comments

Comments
 (0)