From 816746da8a1a579f0c3d85d13fee2c87ea1e83ae Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 4 Jul 2022 16:41:50 +0530 Subject: [PATCH] fix(ui): Fix `ChannelListTile` sendingIndicator `isMessageRead` calculation. Signed-off-by: xsahil03x --- packages/stream_chat_flutter/CHANGELOG.md | 10 +++++++++- .../stream_channel_list_tile.dart | 14 +++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index adf61a98..10b85eb3 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,10 @@ +## Upcoming + +🐞 Fixed + +- [[#1234]](https://github.com/GetStream/stream-chat-flutter/issues/1234) Fix `ChannelListTile` + sendingIndicator `isMessageRead` calculation. + ## 4.3.0 - Updated `photo_view` dependency to [`0.14.0`](https://pub.dev/packages/photo_view/changelog). @@ -9,7 +16,8 @@ - [[#996]](https://github.com/GetStream/stream-chat-flutter/issues/996) Videos break bottom photo carousal. - Fix: URLs with path and/or query params are not enriched. -- [[#1194]](https://github.com/GetStream/stream-chat-flutter/issues/1194) Request permission to access gallery when opening the file picker. +- [[#1194]](https://github.com/GetStream/stream-chat-flutter/issues/1194) Request permission to + access gallery when opening the file picker. ✅ Added diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart index 129875cf..aa6511d8 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart @@ -200,6 +200,14 @@ class StreamChannelListTile extends StatelessWidget { return const Offstage(); } + final memberReadCount = channelState.read.where((it) { + return it.user.id != currentUser.id && + (it.lastRead.isAfter(lastMessage.createdAt) || + it.lastRead.isAtSameMomentAs( + lastMessage.createdAt, + )); + }).length; + return Padding( padding: const EdgeInsets.only(right: 4), child: @@ -207,9 +215,9 @@ class StreamChannelListTile extends StatelessWidget { StreamSendingIndicator( message: lastMessage, size: channelPreviewTheme.indicatorIconSize, - isMessageRead: channelState - .currentUserRead!.lastRead - .isAfter(lastMessage.createdAt), + isMessageRead: memberReadCount >= + // Subtract one for the current user. + (channel.memberCount ?? 0) - 1, ), ); },