From b1201003f5ccbb4e5202b2734a1deed6412f65e3 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 11 Jun 2021 10:31:57 +0200 Subject: [PATCH] fix review --- .../lib/src/channel_image.dart | 12 ++--- .../lib/src/channel_info.dart | 4 +- .../lib/src/channel_list_view.dart | 2 +- .../lib/src/channel_name.dart | 4 +- .../lib/src/channel_preview.dart | 22 ++++---- .../lib/src/connection_status_builder.dart | 50 +++++++------------ .../lib/src/info_tile.dart | 3 -- .../lib/src/message_list_view.dart | 8 +-- .../lib/src/typing_indicator.dart | 6 +-- .../lib/src/unread_indicator.dart | 6 +-- .../lib/src/message_list_core.dart | 4 +- 11 files changed, 51 insertions(+), 70 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/channel_image.dart b/packages/stream_chat_flutter/lib/src/channel_image.dart index dd9bb314..d3e028ee 100644 --- a/packages/stream_chat_flutter/lib/src/channel_image.dart +++ b/packages/stream_chat_flutter/lib/src/channel_image.dart @@ -86,11 +86,11 @@ class ChannelImage extends StatelessWidget { return BetterStreamBuilder>( stream: channel.extraDataStream, initialData: channel.extraData, - builder: (context, snapshot) { + builder: (context, data) { String? image; final chatThemeData = StreamChatTheme.of(context); - if (snapshot.containsKey('image') == true) { - image = snapshot['image']; + if (data.containsKey('image') == true) { + image = data['image']; } else if (channel.state?.members.length == 2) { final otherMember = channel.state?.members .firstWhere((member) => member.user?.id != streamChat.user?.id); @@ -100,11 +100,11 @@ class ChannelImage extends StatelessWidget { users[otherMember?.userId] ?? otherMember!.user!) .distinct(), initialData: otherMember!.user, - builder: (context, snapshot) => UserAvatar( + builder: (context, user) => UserAvatar( borderRadius: borderRadius ?? chatThemeData .channelPreviewTheme.avatarTheme?.borderRadius, - user: snapshot ?? otherMember.user!, + user: user ?? otherMember.user!, constraints: constraints ?? chatThemeData .channelPreviewTheme.avatarTheme?.constraints, @@ -155,7 +155,7 @@ class ChannelImage extends StatelessWidget { imageUrl: image, errorWidget: (_, __, ___) => Center( child: Text( - snapshot.containsKey('name') ? snapshot['name'][0] : '', + data.containsKey('name') ? data['name'][0] : '', style: TextStyle( color: chatThemeData.colorTheme.white, fontWeight: FontWeight.bold, diff --git a/packages/stream_chat_flutter/lib/src/channel_info.dart b/packages/stream_chat_flutter/lib/src/channel_info.dart index 91e7aceb..32dbeb67 100644 --- a/packages/stream_chat_flutter/lib/src/channel_info.dart +++ b/packages/stream_chat_flutter/lib/src/channel_info.dart @@ -28,11 +28,11 @@ class ChannelInfo extends StatelessWidget { return BetterStreamBuilder>( stream: channel.state!.membersStream, initialData: channel.state!.members, - builder: (context, snapshot) => ConnectionStatusBuilder( + builder: (context, data) => ConnectionStatusBuilder( statusBuilder: (context, status) { switch (status) { case ConnectionStatus.connected: - return _buildConnectedTitleState(context, snapshot); + return _buildConnectedTitleState(context, data); case ConnectionStatus.connecting: return _buildConnectingTitleState(context); case ConnectionStatus.disconnected: diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index 12b73f72..d9f25710 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -648,7 +648,7 @@ class _ChannelListViewState extends State { ), ), ), - builder: (context, snapshot) => snapshot + builder: (context, data) => data ? const Center( child: Padding( padding: EdgeInsets.all(16), diff --git a/packages/stream_chat_flutter/lib/src/channel_name.dart b/packages/stream_chat_flutter/lib/src/channel_name.dart index 4d560bed..4819ecc7 100644 --- a/packages/stream_chat_flutter/lib/src/channel_name.dart +++ b/packages/stream_chat_flutter/lib/src/channel_name.dart @@ -29,8 +29,8 @@ class ChannelName extends StatelessWidget { return BetterStreamBuilder>( stream: channel.extraDataStream, initialData: channel.extraData, - builder: (context, snapshot) => _buildName( - snapshot, + builder: (context, data) => _buildName( + data, channel.state?.members, client, ), diff --git a/packages/stream_chat_flutter/lib/src/channel_preview.dart b/packages/stream_chat_flutter/lib/src/channel_preview.dart index bb41f652..d9170eb8 100644 --- a/packages/stream_chat_flutter/lib/src/channel_preview.dart +++ b/packages/stream_chat_flutter/lib/src/channel_preview.dart @@ -73,8 +73,8 @@ class ChannelPreview extends StatelessWidget { return BetterStreamBuilder( stream: channel.isMutedStream, initialData: channel.isMuted, - builder: (context, snapshot) => AnimatedOpacity( - opacity: snapshot ? 0.5 : 1, + builder: (context, data) => AnimatedOpacity( + opacity: data ? 0.5 : 1, duration: const Duration(milliseconds: 300), child: ListTile( visualDensity: VisualDensity.compact, @@ -108,9 +108,9 @@ class ChannelPreview extends StatelessWidget { stream: channel.state?.membersStream, initialData: channel.state?.members, comparator: const ListEquality().equals, - builder: (context, snapshot) { - if (snapshot?.isEmpty == true || - snapshot?.any((Member e) => + builder: (context, members) { + if (members?.isEmpty == true || + members?.any((Member e) => e.user!.id == channel.client.state.user?.id) != true) { @@ -165,11 +165,11 @@ class ChannelPreview extends StatelessWidget { Widget _buildDate(BuildContext context) => BetterStreamBuilder( stream: channel.lastMessageAtStream, initialData: channel.lastMessageAt, - builder: (context, snapshot) { - if (snapshot == null) { + builder: (context, data) { + if (data == null) { return const Offstage(); } - final lastMessageAt = snapshot.toLocal(); + final lastMessageAt = data.toLocal(); String stringDate; final now = DateTime.now(); @@ -225,9 +225,9 @@ class ChannelPreview extends StatelessWidget { BetterStreamBuilder?>( stream: channel.state!.messagesStream, initialData: channel.state!.messages, - builder: (context, snapshot) { - final lastMessage = snapshot - ?.lastWhereOrNull((m) => m.shadowed != true && !m.isDeleted); + builder: (context, data) { + final lastMessage = + data?.lastWhereOrNull((m) => m.shadowed != true && !m.isDeleted); if (lastMessage == null) { return const SizedBox(); } diff --git a/packages/stream_chat_flutter/lib/src/connection_status_builder.dart b/packages/stream_chat_flutter/lib/src/connection_status_builder.dart index 98daa580..fbe7ffae 100644 --- a/packages/stream_chat_flutter/lib/src/connection_status_builder.dart +++ b/packages/stream_chat_flutter/lib/src/connection_status_builder.dart @@ -1,4 +1,3 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; @@ -8,20 +7,16 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// /// The widget will use the closest [StreamChatClient.wsConnectionStatusStream] /// in case no stream is provided. -class ConnectionStatusBuilder extends StatefulWidget { +class ConnectionStatusBuilder extends StatelessWidget { /// Creates a new ConnectionStatusBuilder const ConnectionStatusBuilder({ Key? key, required this.statusBuilder, - this.initialStatus, this.connectionStatusStream, this.errorBuilder, this.loadingBuilder, }) : super(key: key); - /// The connection status that will be used to create the initial snapshot. - final ConnectionStatus? initialStatus; - /// The asynchronous computation to which this builder is currently connected. final Stream? connectionStatusStream; @@ -36,32 +31,21 @@ class ConnectionStatusBuilder extends StatefulWidget { statusBuilder; @override - _ConnectionStatusBuilderState createState() => - _ConnectionStatusBuilderState(); -} - -class _ConnectionStatusBuilderState extends State { - late StreamChatClient client; - late Stream stream; - - @override - Widget build(BuildContext context) => BetterStreamBuilder( - initialData: widget.initialStatus ?? client.wsConnectionStatus, - stream: stream, - loadingBuilder: widget.loadingBuilder, - errorBuilder: (context, error) { - if (widget.errorBuilder != null) { - return widget.errorBuilder!(context, error); - } - return const Offstage(); - }, - builder: widget.statusBuilder, - ); - - @override - void didChangeDependencies() { - client = StreamChat.of(context).client; - stream = widget.connectionStatusStream ?? client.wsConnectionStatusStream; - super.didChangeDependencies(); + Widget build(BuildContext context) { + final stream = connectionStatusStream ?? + StreamChat.of(context).client.wsConnectionStatusStream; + final client = StreamChat.of(context).client; + return BetterStreamBuilder( + initialData: client.wsConnectionStatus, + stream: stream, + loadingBuilder: loadingBuilder, + errorBuilder: (context, error) { + if (errorBuilder != null) { + return errorBuilder!(context, error); + } + return const Offstage(); + }, + builder: statusBuilder, + ); } } diff --git a/packages/stream_chat_flutter/lib/src/info_tile.dart b/packages/stream_chat_flutter/lib/src/info_tile.dart index b420cadc..1e935942 100644 --- a/packages/stream_chat_flutter/lib/src/info_tile.dart +++ b/packages/stream_chat_flutter/lib/src/info_tile.dart @@ -40,9 +40,6 @@ class InfoTile extends StatelessWidget { @override Widget build(BuildContext context) { final chatThemeData = StreamChatTheme.of(context); - if (!showMessage) { - return child; - } return PortalEntry( visible: showMessage, portalAnchor: tileAnchor ?? Alignment.topCenter, diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 195ae1f2..82b64c27 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -1170,9 +1170,9 @@ class _MessageListViewState extends State { (messages) => messages!.firstWhere((m) => m.id == message.id)), initialData: message, - builder: (_, snapshot) => StreamChannel( + builder: (_, data) => StreamChannel( channel: streamChannel!.channel, - child: widget.threadBuilder!(context, snapshot), + child: widget.threadBuilder!(context, data), ), ), ), @@ -1220,8 +1220,8 @@ class _LoadingIndicator extends StatelessWidget { child: Text('Error loading messages'), ), ), - builder: (context, snapshot) { - if (!snapshot) { + builder: (context, data) { + if (!data) { if (!isThreadConversation && direction == QueryDirection.top) { return const SizedBox( height: 52, diff --git a/packages/stream_chat_flutter/lib/src/typing_indicator.dart b/packages/stream_chat_flutter/lib/src/typing_indicator.dart index 5609c18b..cdd2ce68 100644 --- a/packages/stream_chat_flutter/lib/src/typing_indicator.dart +++ b/packages/stream_chat_flutter/lib/src/typing_indicator.dart @@ -49,9 +49,9 @@ class _TypingIndicatorState extends State { return BetterStreamBuilder>( initialData: channelState.typingEvents, stream: channelState.typingEventsStream, - builder: (context, snapshot) => AnimatedSwitcher( + builder: (context, data) => AnimatedSwitcher( duration: const Duration(milliseconds: 300), - child: snapshot.isNotEmpty == true + child: data.isNotEmpty == true ? Padding( key: const Key('main'), padding: widget.padding, @@ -68,7 +68,7 @@ class _TypingIndicatorState extends State { ), Text( // ignore: lines_longer_than_80_chars - ' ${snapshot[0].name}${snapshot.length == 1 ? '' : ' and ${snapshot.length - 1} more'} ${snapshot.length == 1 ? 'is' : 'are'} typing', + ' ${data[0].name}${data.length == 1 ? '' : ' and ${data.length - 1} more'} ${data.length == 1 ? 'is' : 'are'} typing', maxLines: 1, style: widget.style, ), diff --git a/packages/stream_chat_flutter/lib/src/unread_indicator.dart b/packages/stream_chat_flutter/lib/src/unread_indicator.dart index 8b235187..381bad39 100644 --- a/packages/stream_chat_flutter/lib/src/unread_indicator.dart +++ b/packages/stream_chat_flutter/lib/src/unread_indicator.dart @@ -24,8 +24,8 @@ class UnreadIndicator extends StatelessWidget { initialData: cid != null ? client.state.channels[cid]?.state?.unreadCount : client.state.totalUnreadCount, - builder: (context, snapshot) { - if (snapshot == null || snapshot == 0) { + builder: (context, data) { + if (data == null || data == 0) { return const Offstage(); } return Material( @@ -42,7 +42,7 @@ class UnreadIndicator extends StatelessWidget { ), child: Center( child: Text( - '${snapshot > 99 ? '99+' : snapshot}', + '${data > 99 ? '99+' : data}', style: const TextStyle( fontSize: 11, color: Colors.white, diff --git a/packages/stream_chat_flutter_core/lib/src/message_list_core.dart b/packages/stream_chat_flutter_core/lib/src/message_list_core.dart index 0da733bf..2a257fe6 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_list_core.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_list_core.dart @@ -151,8 +151,8 @@ class MessageListCoreState extends State { ), errorBuilder: widget.errorWidgetBuilder, loadingBuilder: widget.loadingBuilder, - builder: (context, snapshot) { - final messageList = snapshot?.reversed.toList(growable: false) ?? []; + builder: (context, data) { + final messageList = data?.reversed.toList(growable: false) ?? []; if (messageList.isEmpty && !_isThreadConversation) { if (_upToDate) { return widget.emptyBuilder(context);