Merge pull request #1534 from GetStream/fix/message-list-time-diff

This commit is contained in:
Sahil Kumar
2023-05-12 14:56:01 +05:30
committed by GitHub
2 changed files with 20 additions and 20 deletions
+4 -1
View File
@@ -15,7 +15,10 @@
applied correctly. applied correctly.
- [[#1525]](https://github.com/GetStream/stream-chat-flutter/issues/1525) Fixed `StreamQuotedMessageWidget` message for - [[#1525]](https://github.com/GetStream/stream-chat-flutter/issues/1525) Fixed `StreamQuotedMessageWidget` message for
deleted messages not being shown correctly. deleted messages not being shown correctly.
- [[#1529]](https://github.com/GetStream/stream-chat-flutter/issues/1529) Fixed fix `ClipboardData` requires non-nullable string as text on Flutter 3.10. - [[#1529]](https://github.com/GetStream/stream-chat-flutter/issues/1529) Fixed `ClipboardData` requires non-nullable
string as text on Flutter 3.10.
- [[#1533]](https://github.com/GetStream/stream-chat-flutter/issues/1533) Fixed `StreamMessageListView` messages grouped
incorrectly w.r.t. timestamp.
✅ Added ✅ Added
@@ -652,22 +652,19 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
final isPartOfThread = message.replyCount! > 0 || final isPartOfThread = message.replyCount! > 0 ||
message.showInChannel == true; message.showInChannel == true;
if (!Jiffy(message.createdAt.toLocal()).isSame( final createdAt = message.createdAt.toLocal();
nextMessage.createdAt.toLocal(), final nextCreatedAt = nextMessage.createdAt.toLocal();
Units.DAY, if (!Jiffy(createdAt).isSame(nextCreatedAt, Units.DAY)) {
)) {
separator = _buildDateDivider(nextMessage); separator = _buildDateDivider(nextMessage);
} else { } else {
final timeDiff = final hasTimeDiff = !Jiffy(createdAt).isSame(
Jiffy(nextMessage.createdAt.toLocal()).diff( nextCreatedAt,
message.createdAt.toLocal(),
Units.MINUTE, Units.MINUTE,
); );
final isNextUserSame = final isNextUserSame =
message.user!.id == nextMessage.user?.id; message.user!.id == nextMessage.user?.id;
final isDeleted = message.isDeleted; final isDeleted = message.isDeleted;
final hasTimeDiff = timeDiff >= 1;
final spacingRules = [ final spacingRules = [
if (hasTimeDiff) SpacingType.timeDiff, if (hasTimeDiff) SpacingType.timeDiff,
@@ -1064,10 +1061,10 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
final isNextUserSame = final isNextUserSame =
nextMessage != null && message.user!.id == nextMessage.user!.id; nextMessage != null && message.user!.id == nextMessage.user!.id;
num timeDiff = 0; var hasTimeDiff = false;
if (nextMessage != null) { if (nextMessage != null) {
timeDiff = Jiffy(nextMessage.createdAt.toLocal()).diff( hasTimeDiff = !Jiffy(message.createdAt.toLocal()).isSame(
message.createdAt.toLocal(), nextMessage.createdAt.toLocal(),
Units.MINUTE, Units.MINUTE,
); );
} }
@@ -1084,21 +1081,21 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
final showTimeStamp = (!isThreadMessage || _isThreadConversation) && final showTimeStamp = (!isThreadMessage || _isThreadConversation) &&
!hasReplies && !hasReplies &&
(timeDiff >= 1 || !isNextUserSame); (hasTimeDiff || !isNextUserSame);
final showUsername = !isMyMessage && final showUsername = !isMyMessage &&
(!isThreadMessage || _isThreadConversation) && (!isThreadMessage || _isThreadConversation) &&
!hasReplies && !hasReplies &&
(timeDiff >= 1 || !isNextUserSame); (hasTimeDiff || !isNextUserSame);
final showUserAvatar = isMyMessage final showUserAvatar = isMyMessage
? DisplayWidget.gone ? DisplayWidget.gone
: (timeDiff >= 1 || !isNextUserSame) : (hasTimeDiff || !isNextUserSame)
? DisplayWidget.show ? DisplayWidget.show
: DisplayWidget.hide; : DisplayWidget.hide;
final showSendingIndicator = final showSendingIndicator =
isMyMessage && (index == 0 || timeDiff >= 1 || !isNextUserSame); isMyMessage && (index == 0 || hasTimeDiff || !isNextUserSame);
final showInChannelIndicator = !_isThreadConversation && isThreadMessage; final showInChannelIndicator = !_isThreadConversation && isThreadMessage;
final showThreadReplyIndicator = !_isThreadConversation && hasReplies; final showThreadReplyIndicator = !_isThreadConversation && hasReplies;
@@ -1157,7 +1154,7 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
bottomLeft: isMyMessage bottomLeft: isMyMessage
? Radius.circular(attachmentBorderRadius) ? Radius.circular(attachmentBorderRadius)
: Radius.circular( : Radius.circular(
(timeDiff >= 1 || !isNextUserSame) && (hasTimeDiff || !isNextUserSame) &&
!(hasReplies || isThreadMessage || hasFileAttachment) !(hasReplies || isThreadMessage || hasFileAttachment)
? 0 ? 0
: attachmentBorderRadius, : attachmentBorderRadius,
@@ -1165,7 +1162,7 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
topRight: Radius.circular(attachmentBorderRadius), topRight: Radius.circular(attachmentBorderRadius),
bottomRight: isMyMessage bottomRight: isMyMessage
? Radius.circular( ? Radius.circular(
(timeDiff >= 1 || !isNextUserSame) && (hasTimeDiff || !isNextUserSame) &&
!(hasReplies || isThreadMessage || hasFileAttachment) !(hasReplies || isThreadMessage || hasFileAttachment)
? 0 ? 0
: attachmentBorderRadius, : attachmentBorderRadius,
@@ -1178,7 +1175,7 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
bottomLeft: isMyMessage bottomLeft: isMyMessage
? const Radius.circular(16) ? const Radius.circular(16)
: Radius.circular( : Radius.circular(
(timeDiff >= 1 || !isNextUserSame) && (hasTimeDiff || !isNextUserSame) &&
!(hasReplies || isThreadMessage) !(hasReplies || isThreadMessage)
? 0 ? 0
: 16, : 16,
@@ -1186,7 +1183,7 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
topRight: const Radius.circular(16), topRight: const Radius.circular(16),
bottomRight: isMyMessage bottomRight: isMyMessage
? Radius.circular( ? Radius.circular(
(timeDiff >= 1 || !isNextUserSame) && (hasTimeDiff || !isNextUserSame) &&
!(hasReplies || isThreadMessage) !(hasReplies || isThreadMessage)
? 0 ? 0
: 16, : 16,