From 06542da156ae4b7ae49135399e0df9ad2526025a Mon Sep 17 00:00:00 2001 From: Leandro Borges Ferreira Date: Wed, 15 Feb 2023 17:33:23 +0100 Subject: [PATCH] Using only SendingIndicatorBuilder (rename from SendingIndicatorWrapper) --- .../lib/src/channel/channel_preview.dart | 3 ++- .../lib/src/message_widget/bottom_row.dart | 2 +- .../sending_indicator_wrapper.dart | 16 +++++++++------- .../stream_channel_list_tile.dart | 16 +++++++++++++--- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/channel/channel_preview.dart b/packages/stream_chat_flutter/lib/src/channel/channel_preview.dart index 7bca5249..ded6f558 100644 --- a/packages/stream_chat_flutter/lib/src/channel/channel_preview.dart +++ b/packages/stream_chat_flutter/lib/src/channel/channel_preview.dart @@ -302,12 +302,13 @@ class ChannelPreview extends StatelessWidget { it.type == 'giphy') .isNotEmpty; - return SendingIndicatorWrapper( + return SendingIndicatorBuilder( messageTheme: streamChatTheme.ownMessageTheme, message: lastMessage, hasNonUrlAttachments: hasNonUrlAttachments, streamChat: streamChatState, streamChatTheme: streamChatTheme, + channel: channel, ); }, ), diff --git a/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart b/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart index 5b1b1466..579dc65d 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart @@ -204,7 +204,7 @@ class BottomRow extends StatelessWidget { if (showSendingIndicator) WidgetSpan( child: sendingIndicatorBuilder?.call(context, message) ?? - SendingIndicatorWrapper( + SendingIndicatorBuilder( messageTheme: messageTheme, message: message, hasNonUrlAttachments: hasNonUrlAttachments, 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 1e2e31c6..02ebe5ff 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 @@ -6,15 +6,16 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// /// Used in [BottomRow]. Should not be used elsewhere. /// {@endtemplate} -class SendingIndicatorWrapper extends StatelessWidget { +class SendingIndicatorBuilder extends StatelessWidget { /// {@macro sendingIndicatorWrapper} - const SendingIndicatorWrapper({ + const SendingIndicatorBuilder({ super.key, required this.messageTheme, required this.message, required this.hasNonUrlAttachments, required this.streamChat, required this.streamChatTheme, + this.channel, }); /// {@macro messageTheme} @@ -32,10 +33,13 @@ class SendingIndicatorWrapper extends StatelessWidget { /// {@macro streamChatThemeData} final StreamChatThemeData streamChatTheme; + final Channel? channel; + @override Widget build(BuildContext context) { final style = messageTheme.createdAtStyle; - final memberCount = StreamChannel.of(context).channel.memberCount ?? 0; + final thisChannel = channel ?? StreamChannel.of(context).channel; + final memberCount = thisChannel.memberCount ?? 0; if (hasNonUrlAttachments && (message.status == MessageSendingStatus.sending || @@ -58,11 +62,9 @@ class SendingIndicatorWrapper extends StatelessWidget { ); } - final channel = StreamChannel.of(context).channel; - return BetterStreamBuilder>( - stream: channel.state?.readStream, - initialData: channel.state?.read, + stream: thisChannel.state?.readStream, + initialData: thisChannel.state?.read, builder: (context, data) { final readList = data.where((it) => it.user.id != streamChat.currentUser?.id && 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 999ce91a..08eb9e3b 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 @@ -1,5 +1,6 @@ import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/message_widget/sending_indicator_wrapper.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// A widget that displays a channel preview. @@ -145,6 +146,8 @@ class StreamChannelListTile extends StatelessWidget { final currentUser = channel.client.state.currentUser!; final channelPreviewTheme = StreamChannelPreviewTheme.of(context); + final streamChatTheme = StreamChatTheme.of(context); + final streamChat = StreamChat.of(context); final leading = this.leading ?? StreamChannelAvatar( @@ -234,14 +237,21 @@ class StreamChannelListTile extends StatelessWidget { readData.lastRead .isAtSameMomentAs(lastMessage.createdAt)); + final hasNonUrlAttachments = lastMessage.attachments + .where((it) => it.titleLink == null || it.type == 'giphy') + .isNotEmpty; + return Padding( padding: const EdgeInsets.only(right: 4), child: sendingIndicatorBuilder?.call(context, lastMessage) ?? - StreamSendingIndicator( + SendingIndicatorBuilder( + messageTheme: streamChatTheme.ownMessageTheme, message: lastMessage, - size: channelPreviewTheme.indicatorIconSize, - isMessageRead: isLastMessageRead, + hasNonUrlAttachments: hasNonUrlAttachments, + streamChat: streamChat, + streamChatTheme: streamChatTheme, + channel: channel, ), ); },