@@ -35,18 +35,31 @@ class MessageListDateSeparatorItem extends MessageListItem {
35
35
MessageListDateSeparatorItem (this .message);
36
36
}
37
37
38
- /// A message to show in the message list.
39
- class MessageListMessageItem extends MessageListItem {
40
- final Message message;
41
- ZulipMessageContent content;
38
+ /// A [MessageBase] to show in the message list.
39
+ sealed class MessageListMessageBaseItem extends MessageListItem {
40
+ MessageBase get message;
41
+ ZulipMessageContent get content;
42
42
bool showSender;
43
43
bool isLastInBlock;
44
44
45
+ MessageListMessageBaseItem ({
46
+ required this .showSender,
47
+ required this .isLastInBlock,
48
+ });
49
+ }
50
+
51
+ /// A [Message] to show in the message list.
52
+ class MessageListMessageItem extends MessageListMessageBaseItem {
53
+ @override
54
+ final Message message;
55
+ @override
56
+ ZulipMessageContent content;
57
+
45
58
MessageListMessageItem (
46
59
this .message,
47
60
this .content, {
48
- required this .showSender,
49
- required this .isLastInBlock,
61
+ required super .showSender,
62
+ required super .isLastInBlock,
50
63
});
51
64
}
52
65
@@ -350,12 +363,12 @@ mixin _MessageSequence {
350
363
}
351
364
352
365
@visibleForTesting
353
- bool haveSameRecipient (Message prevMessage, Message message) {
366
+ bool haveSameRecipient (MessageBase prevMessage, MessageBase message) {
354
367
return prevMessage.conversation.isSameAs (message.conversation);
355
368
}
356
369
357
370
@visibleForTesting
358
- bool messagesSameDay (Message prevMessage, Message message) {
371
+ bool messagesSameDay (MessageBase prevMessage, MessageBase message) {
359
372
// TODO memoize [DateTime]s... also use memoized for showing date/time in msglist
360
373
final prevTime = DateTime .fromMillisecondsSinceEpoch (prevMessage.timestamp * 1000 );
361
374
final time = DateTime .fromMillisecondsSinceEpoch (message.timestamp * 1000 );
@@ -410,19 +423,20 @@ class MessageListView with ChangeNotifier, _MessageSequence {
410
423
/// one way or another.
411
424
///
412
425
/// See also [_allMessagesVisible] .
413
- bool _messageVisible (Message message) {
426
+ bool _messageVisible (MessageBase message) {
414
427
switch (narrow) {
415
428
case CombinedFeedNarrow ():
416
- return switch (message) {
417
- StreamMessage ( ) =>
418
- store.isTopicVisible (message. streamId, message. topic),
419
- DmMessage () => true ,
429
+ return switch (message.conversation ) {
430
+ StreamConversation ( : final streamId, : final topic ) =>
431
+ store.isTopicVisible (streamId, topic),
432
+ DmConversation () => true ,
420
433
};
421
434
422
435
case ChannelNarrow (: final streamId):
423
- assert (message is StreamMessage && message.streamId == streamId);
424
- if (message is ! StreamMessage ) return false ;
425
- return store.isTopicVisibleInStream (streamId, message.topic);
436
+ assert (message is MessageBase <StreamConversation >
437
+ && message.conversation.streamId == streamId);
438
+ if (message is ! MessageBase <StreamConversation >) return false ;
439
+ return store.isTopicVisibleInStream (streamId, message.conversation.topic);
426
440
427
441
case TopicNarrow ():
428
442
case DmNarrow ():
0 commit comments