fix(ui): fix messages grouped incorrectly w.r.t. timestamp.
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user