From a59dd88af4eff786187fa34e6fc6260467f2ef6b Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Thu, 9 Feb 2023 15:07:17 +0100 Subject: [PATCH] Fixing logic for sending indicator --- .../src/message_widget/sending_indicator_wrapper.dart | 5 +++-- .../channel_scroll_view/stream_channel_list_tile.dart | 11 ++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_widget/sending_indicator_wrapper.dart b/packages/stream_chat_flutter/lib/src/message_widget/sending_indicator_wrapper.dart index 9ca61558..9e2a97c2 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/sending_indicator_wrapper.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/sending_indicator_wrapper.dart @@ -65,10 +65,11 @@ class SendingIndicatorWrapper extends StatelessWidget { initialData: channel.state?.read, builder: (context, data) { final readList = data.where((it) => - it.user.id != streamChat.currentUser?.id && + it.user.id != streamChat.currentUser?.id && (it.lastRead.isAfter(message.createdAt) || it.lastRead.isAtSameMomentAs(message.createdAt))); - final isMessageRead = readList.length >= (channel.memberCount ?? 0) - 1; + + final isMessageRead = readList.isNotEmpty; Widget child = StreamSendingIndicator( message: message, isMessageRead: isMessageRead, diff --git a/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart index 508b9458..267c3694 100644 --- a/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart @@ -225,6 +225,13 @@ class StreamChannelListTile extends StatelessWidget { return const Offstage(); } + final isLastMessageRead = channelState.read + .where((readData) => readData.user.id != currentUser.id) + .any((readData) => + readData.lastRead.isAfter(lastMessage.createdAt) || + readData.lastRead + .isAtSameMomentAs(lastMessage.createdAt)); + return Padding( padding: const EdgeInsets.only(right: 4), child: @@ -232,9 +239,7 @@ class StreamChannelListTile extends StatelessWidget { StreamSendingIndicator( message: lastMessage, size: channelPreviewTheme.indicatorIconSize, - isMessageRead: channelState - .currentUserRead!.lastRead - .isAfter(lastMessage.createdAt), + isMessageRead: isLastMessageRead, ), ); },