diff --git a/packages/chatty/lib/ui/common/my_channel_preview.dart b/packages/chatty/lib/ui/common/my_channel_preview.dart index 9156d83..9d54a9b 100644 --- a/packages/chatty/lib/ui/common/my_channel_preview.dart +++ b/packages/chatty/lib/ui/common/my_channel_preview.dart @@ -1,9 +1,6 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /*Navigator.push( context, diff --git a/packages/imessage/lib/message_page.dart b/packages/imessage/lib/message_page.dart index 23d15df..497e19c 100644 --- a/packages/imessage/lib/message_page.dart +++ b/packages/imessage/lib/message_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:imessage/message_list_view.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart' show diff --git a/packages/stream_chat_v1/android/app/build.gradle b/packages/stream_chat_v1/android/app/build.gradle index ce7eeee..147d607 100644 --- a/packages/stream_chat_v1/android/app/build.gradle +++ b/packages/stream_chat_v1/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 30 + compileSdkVersion 31 ndkVersion '21.4.7075529' sourceSets { diff --git a/packages/stream_chat_v1/lib/advanced_options_page.dart b/packages/stream_chat_v1/lib/advanced_options_page.dart index a42f200..2645e19 100644 --- a/packages/stream_chat_v1/lib/advanced_options_page.dart +++ b/packages/stream_chat_v1/lib/advanced_options_page.dart @@ -3,7 +3,6 @@ import 'package:example/localizations.dart'; import 'package:example/routes/routes.dart'; import 'package:example/stream_version.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; diff --git a/packages/stream_chat_v1/lib/channel_file_display_screen.dart b/packages/stream_chat_v1/lib/channel_file_display_screen.dart index 4f4a806..743b3eb 100644 --- a/packages/stream_chat_v1/lib/channel_file_display_screen.dart +++ b/packages/stream_chat_v1/lib/channel_file_display_screen.dart @@ -160,7 +160,7 @@ class _ChannelFileDisplayScreenState extends State { padding: const EdgeInsets.all(1.0), child: Padding( padding: const EdgeInsets.all(8.0), - child: FileAttachment( + child: StreamFileAttachment( message: media.values.toList()[position], attachment: media.keys.toList()[position], ), diff --git a/packages/stream_chat_v1/lib/channel_list.dart b/packages/stream_chat_v1/lib/channel_list.dart index d13e830..25813f0 100644 --- a/packages/stream_chat_v1/lib/channel_list.dart +++ b/packages/stream_chat_v1/lib/channel_list.dart @@ -6,6 +6,7 @@ import 'package:example/search_text_field.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'package:flutter_slidable/flutter_slidable.dart'; import 'channel_page.dart'; import 'chat_info_screen.dart'; @@ -39,6 +40,16 @@ class _ChannelList extends State { }); } + late final _channelListController = StreamChannelListController( + client: StreamChat.of(context).client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + presence: true, + limit: 30, + ); + @override void initState() { super.initState(); @@ -86,7 +97,7 @@ class _ChannelList extends State { ), ], body: _isSearchActive - ? MessageSearchListView( + ? StreamMessageSearchListView( showErrorTile: true, messageQuery: _channelQuery, filters: Filter.in_('members', [user!.id]), @@ -149,59 +160,141 @@ class _ChannelList extends State { ); }, ) - : ChannelListView( - onChannelTap: (channel, _) { - Navigator.pushNamed( - context, - Routes.CHANNEL_PAGE, - arguments: ChannelPageArgs( - channel: channel, - ), - ); - }, - onStartChatPressed: () { - Navigator.pushNamed(context, Routes.NEW_CHAT); - }, - swipeToAction: true, - filter: Filter.in_('members', [user!.id]), - presence: true, - limit: 30, - onViewInfoTap: (channel) { - Navigator.pop(context); - if (channel.memberCount == 2 && channel.isDistinct) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => StreamChannel( + : SlidableAutoCloseBehavior( + closeWhenOpened: true, + child: RefreshIndicator( + onRefresh: _channelListController.refresh, + child: StreamChannelListView( + controller: _channelListController, + itemBuilder: (context, channel, tile) { + final chatTheme = StreamChatTheme.of(context); + final backgroundColor = chatTheme.colorTheme.inputBg; + final canDeleteChannel = channel.ownCapabilities + .contains(PermissionType.deleteChannel); + return Slidable( + groupTag: 'channels-actions', + endActionPane: ActionPane( + extentRatio: canDeleteChannel ? 0.40 : 0.20, + motion: const BehindMotion(), + children: [ + CustomSlidableAction( + child: Icon(Icons.more_horiz), + backgroundColor: backgroundColor, + onPressed: (_) { + showChannelInfoModalBottomSheet( + context: context, + channel: channel, + onViewInfoTap: () { + Navigator.pop(context); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + final isOneToOne = + channel.memberCount == 2 && + channel.isDistinct; + return StreamChannel( + channel: channel, + child: isOneToOne + ? ChatInfoScreen( + messageTheme: chatTheme + .ownMessageTheme, + user: channel + .state!.members + .where((m) => + m.userId != + channel + .client + .state + .currentUser! + .id) + .first + .user, + ) + : GroupInfoScreen( + messageTheme: chatTheme + .ownMessageTheme, + ), + ); + }, + ), + ); + }, + ); + }, + ), + if (canDeleteChannel) + CustomSlidableAction( + backgroundColor: backgroundColor, + child: StreamSvgIcon.delete( + color: chatTheme.colorTheme.accentError, + ), + onPressed: (_) async { + final res = await showConfirmationDialog( + context, + title: 'Delete Conversation', + question: + 'Are you sure you want to delete this conversation?', + okText: 'Delete', + cancelText: 'Cancel', + icon: StreamSvgIcon.delete( + color: chatTheme.colorTheme.accentError, + ), + ); + if (res == true) { + await _channelListController + .deleteChannel(channel); + } + }, + ), + ], + ), + child: tile, + ); + }, + onChannelTap: (channel) { + Navigator.pushNamed( + context, + Routes.CHANNEL_PAGE, + arguments: ChannelPageArgs( channel: channel, - child: ChatInfoScreen( - messageTheme: - StreamChatTheme.of(context).ownMessageTheme, - user: channel.state!.members - .where((m) => - m.userId != - channel.client.state.currentUser!.id) - .first - .user, + ), + ); + }, + emptyBuilder: (_) { + return Center( + child: Padding( + padding: EdgeInsets.all(8), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Expanded(child: StreamChannelListEmptyWidget()), + TextButton( + onPressed: () { + Navigator.pushNamed( + context, + Routes.NEW_CHAT, + ); + }, + child: Text( + 'Start a chat', + style: StreamChatTheme.of(context) + .textTheme + .bodyBold + .copyWith( + color: StreamChatTheme.of(context) + .colorTheme + .accentPrimary, + ), + ), + ), + ], ), ), - ), - ); - } else { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => StreamChannel( - channel: channel, - child: GroupInfoScreen( - messageTheme: - StreamChatTheme.of(context).ownMessageTheme, - ), - ), - ), - ); - } - }, + ); + }, + ), + ), ), ), ), diff --git a/packages/stream_chat_v1/lib/channel_list_page.dart b/packages/stream_chat_v1/lib/channel_list_page.dart index be43bd6..af45104 100644 --- a/packages/stream_chat_v1/lib/channel_list_page.dart +++ b/packages/stream_chat_v1/lib/channel_list_page.dart @@ -40,7 +40,7 @@ class _ChannelListPageState extends State { Positioned( top: -3, right: -16, - child: UnreadIndicator(), + child: StreamUnreadIndicator(), ), ], ), @@ -70,7 +70,7 @@ class _ChannelListPageState extends State { } return Scaffold( backgroundColor: StreamChatTheme.of(context).colorTheme.appBg, - appBar: ChannelListHeader( + appBar: StreamChannelListHeader( onNewChatButtonTap: () { Navigator.pushNamed(context, Routes.NEW_CHAT); }, @@ -100,10 +100,8 @@ class _ChannelListPageState extends State { body: IndexedStack( index: _currentIndex, children: [ - ChannelsBloc( - child: MessageSearchBloc( - child: ChannelList(), - ), + MessageSearchBloc( + child: ChannelList(), ), UserMentionsPage(), ], @@ -165,7 +163,7 @@ class LeftDrawer extends StatelessWidget { ), child: Row( children: [ - UserAvatar( + StreamUserAvatar( user: user, showOnlineStatus: false, constraints: BoxConstraints.tight(Size.fromRadius(20)), diff --git a/packages/stream_chat_v1/lib/channel_media_display_screen.dart b/packages/stream_chat_v1/lib/channel_media_display_screen.dart index ee23293..5ccd92c 100644 --- a/packages/stream_chat_v1/lib/channel_media_display_screen.dart +++ b/packages/stream_chat_v1/lib/channel_media_display_screen.dart @@ -21,7 +21,7 @@ class ChannelMediaDisplayScreen extends StatefulWidget { final ShowMessageCallback? onShowMessage; - final MessageThemeData messageTheme; + final StreamMessageThemeData messageTheme; const ChannelMediaDisplayScreen({ required this.messageTheme, @@ -180,7 +180,7 @@ class _ChannelMediaDisplayScreenState extends State { MaterialPageRoute( builder: (context) => StreamChannel( channel: channel, - child: FullScreenMedia( + child: StreamFullScreenMedia( mediaAttachments: media.map((e) => e.attachment).toList(), startIndex: position, @@ -194,7 +194,7 @@ class _ChannelMediaDisplayScreenState extends State { }, child: media[position].attachment.type == 'image' ? IgnorePointer( - child: ImageAttachment( + child: StreamImageAttachment( attachment: media[position].attachment, message: media[position].message, showTitle: false, diff --git a/packages/stream_chat_v1/lib/channel_page.dart b/packages/stream_chat_v1/lib/channel_page.dart index 19aa3a3..6cf60e5 100644 --- a/packages/stream_chat_v1/lib/channel_page.dart +++ b/packages/stream_chat_v1/lib/channel_page.dart @@ -60,7 +60,7 @@ class _ChannelPageState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: StreamChatTheme.of(context).colorTheme.appBg, - appBar: ChannelHeader( + appBar: StreamChannelHeader( showTypingIndicator: false, onImageTap: () async { var channel = StreamChannel.of(context).channel; @@ -108,7 +108,7 @@ class _ChannelPageState extends State { Expanded( child: Stack( children: [ - MessageListView( + StreamMessageListView( initialScrollIndex: widget.initialScrollIndex, initialAlignment: widget.initialAlignment, highlightInitialMessage: widget.highlightInitialMessage, @@ -137,7 +137,7 @@ class _ChannelPageState extends State { ); }, deletedBottomRowBuilder: (context, message) { - return const VisibleFootnote(); + return const StreamVisibleFootnote(); }, ); }, @@ -155,8 +155,7 @@ class _ChannelPageState extends State { .colorTheme .appBg .withOpacity(.9), - child: TypingIndicator( - alignment: Alignment.centerLeft, + child: StreamTypingIndicator( padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4, @@ -174,7 +173,7 @@ class _ChannelPageState extends State { ], ), ), - MessageInput( + StreamMessageInput( focusNode: _focusNode, messageInputController: _messageInputController, ), diff --git a/packages/stream_chat_v1/lib/chat_info_screen.dart b/packages/stream_chat_v1/lib/chat_info_screen.dart index 2ba0789..9556840 100644 --- a/packages/stream_chat_v1/lib/chat_info_screen.dart +++ b/packages/stream_chat_v1/lib/chat_info_screen.dart @@ -1,8 +1,6 @@ -import 'package:collection/collection.dart' show IterableExtension; import 'package:example/localizations.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'channel_file_display_screen.dart'; @@ -16,7 +14,7 @@ class ChatInfoScreen extends StatefulWidget { /// User in consideration final User? user; - final MessageThemeData messageTheme; + final StreamMessageThemeData messageTheme; const ChatInfoScreen({ Key? key, @@ -54,13 +52,7 @@ class _ChatInfoScreenState extends State { height: 8.0, color: StreamChatTheme.of(context).colorTheme.disabled, ), - if ([ - 'admin', - 'owner', - ].contains(channel.state!.members - .firstWhereOrNull( - (m) => m.userId == channel.client.state.currentUser!.id) - ?.role)) + if (channel.ownCapabilities.contains(PermissionType.deleteChannel)) _buildDeleteListTile(), ], ), @@ -78,7 +70,7 @@ class _ChatInfoScreenState extends State { children: [ Padding( padding: const EdgeInsets.all(16.0), - child: UserAvatar( + child: StreamUserAvatar( user: widget.user!, constraints: BoxConstraints.tightFor( width: 72.0, @@ -95,7 +87,7 @@ class _ChatInfoScreenState extends State { SizedBox(height: 7.0), _buildConnectedTitleState(), SizedBox(height: 15.0), - OptionListTile( + StreamOptionListTile( title: '@${widget.user!.id}', tileColor: StreamChatTheme.of(context).colorTheme.appBg, trailing: Padding( @@ -148,7 +140,7 @@ class _ChatInfoScreenState extends State { builder: (context, snapshot) { mutedBool.value = snapshot.data; - return OptionListTile( + return StreamOptionListTile( tileColor: StreamChatTheme.of(context).colorTheme.appBg, title: AppLocalizations.of(context).muteUser, titleTextStyle: StreamChatTheme.of(context).textTheme.body, @@ -201,7 +193,7 @@ class _ChatInfoScreenState extends State { // ), // onTap: () {}, // ), - OptionListTile( + StreamOptionListTile( title: AppLocalizations.of(context).pinnedMessages, tileColor: StreamChatTheme.of(context).colorTheme.appBg, titleTextStyle: StreamChatTheme.of(context).textTheme.body, @@ -261,7 +253,7 @@ class _ChatInfoScreenState extends State { ); }, ), - OptionListTile( + StreamOptionListTile( title: AppLocalizations.of(context).photosAndVideos, tileColor: StreamChatTheme.of(context).colorTheme.appBg, titleTextStyle: StreamChatTheme.of(context).textTheme.body, @@ -321,7 +313,7 @@ class _ChatInfoScreenState extends State { ); }, ), - OptionListTile( + StreamOptionListTile( title: AppLocalizations.of(context).files, tileColor: StreamChatTheme.of(context).colorTheme.appBg, titleTextStyle: StreamChatTheme.of(context).textTheme.body, @@ -361,7 +353,7 @@ class _ChatInfoScreenState extends State { ); }, ), - OptionListTile( + StreamOptionListTile( title: AppLocalizations.of(context).sharedGroups, tileColor: StreamChatTheme.of(context).colorTheme.appBg, titleTextStyle: StreamChatTheme.of(context).textTheme.body, @@ -391,7 +383,7 @@ class _ChatInfoScreenState extends State { } Widget _buildDeleteListTile() { - return OptionListTile( + return StreamOptionListTile( title: 'Delete Conversation', tileColor: StreamChatTheme.of(context).colorTheme.appBg, titleTextStyle: StreamChatTheme.of(context).textTheme.body.copyWith( @@ -632,7 +624,7 @@ class __SharedGroupsScreenState extends State<_SharedGroupsScreen> { children: [ Padding( padding: const EdgeInsets.all(8.0), - child: ChannelAvatar( + child: StreamChannelAvatar( channel: channel, constraints: BoxConstraints(maxWidth: 40.0, maxHeight: 40.0), diff --git a/packages/stream_chat_v1/lib/choose_user_page.dart b/packages/stream_chat_v1/lib/choose_user_page.dart index 7d3ce51..611804c 100644 --- a/packages/stream_chat_v1/lib/choose_user_page.dart +++ b/packages/stream_chat_v1/lib/choose_user_page.dart @@ -124,7 +124,7 @@ class ChooseUserPage extends StatelessWidget { arguments: HomePageArgs(client), ); }, - leading: UserAvatar( + leading: StreamUserAvatar( user: user, constraints: BoxConstraints.tight( Size.fromRadius(20), diff --git a/packages/stream_chat_v1/lib/group_chat_details_screen.dart b/packages/stream_chat_v1/lib/group_chat_details_screen.dart index df40cc5..cd75681 100644 --- a/packages/stream_chat_v1/lib/group_chat_details_screen.dart +++ b/packages/stream_chat_v1/lib/group_chat_details_screen.dart @@ -1,7 +1,6 @@ import 'package:example/localizations.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:uuid/uuid.dart'; import 'channel_page.dart'; import 'routes/routes.dart'; @@ -155,7 +154,7 @@ class _GroupChatDetailsScreenState extends State { ), ], ), - body: ConnectionStatusBuilder( + body: StreamConnectionStatusBuilder( statusBuilder: (context, status) { String statusString = ''; bool showStatus = true; @@ -172,7 +171,7 @@ class _GroupChatDetailsScreenState extends State { statusString = AppLocalizations.of(context).disconnected; break; } - return InfoTile( + return StreamInfoTile( showMessage: showStatus, tileAnchor: Alignment.topCenter, childAnchor: Alignment.topCenter, @@ -222,7 +221,7 @@ class _GroupChatDetailsScreenState extends State { final user = _selectedUsers[index]; return ListTile( key: ObjectKey(user), - leading: UserAvatar( + leading: StreamUserAvatar( user: user, constraints: BoxConstraints.tightFor( width: 40, diff --git a/packages/stream_chat_v1/lib/group_info_screen.dart b/packages/stream_chat_v1/lib/group_info_screen.dart index 9609249..ba70916 100644 --- a/packages/stream_chat_v1/lib/group_info_screen.dart +++ b/packages/stream_chat_v1/lib/group_info_screen.dart @@ -4,7 +4,6 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:example/localizations.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'channel_file_display_screen.dart'; @@ -15,7 +14,7 @@ import 'pinned_messages_screen.dart'; import 'routes/routes.dart'; class GroupInfoScreen extends StatefulWidget { - final MessageThemeData messageTheme; + final StreamMessageThemeData messageTheme; const GroupInfoScreen({ Key? key, @@ -222,7 +221,7 @@ class _GroupInfoScreenState extends State { horizontal: 8.0, vertical: 12.0, ), - child: UserAvatar( + child: StreamUserAvatar( user: member.user!, constraints: BoxConstraints.tightFor( height: 40.0, @@ -456,7 +455,7 @@ class _GroupInfoScreenState extends State { builder: (context, snapshot) { mutedBool.value = snapshot.data; - return OptionListTile( + return StreamOptionListTile( tileColor: StreamChatTheme.of(context).colorTheme.appBg, separatorColor: StreamChatTheme.of(context).colorTheme.disabled, @@ -493,7 +492,7 @@ class _GroupInfoScreenState extends State { onTap: () {}, ); }), - OptionListTile( + StreamOptionListTile( title: AppLocalizations.of(context).pinnedMessages, tileColor: StreamChatTheme.of(context).colorTheme.appBg, titleTextStyle: StreamChatTheme.of(context).textTheme.body, @@ -553,7 +552,7 @@ class _GroupInfoScreenState extends State { ); }, ), - OptionListTile( + StreamOptionListTile( tileColor: StreamChatTheme.of(context).colorTheme.appBg, separatorColor: StreamChatTheme.of(context).colorTheme.disabled, title: AppLocalizations.of(context).photosAndVideos, @@ -615,7 +614,7 @@ class _GroupInfoScreenState extends State { ); }, ), - OptionListTile( + StreamOptionListTile( tileColor: StreamChatTheme.of(context).colorTheme.appBg, separatorColor: StreamChatTheme.of(context).colorTheme.disabled, title: AppLocalizations.of(context).files, @@ -660,7 +659,7 @@ class _GroupInfoScreenState extends State { if (!channel.channel.isDistinct && channel.channel.ownCapabilities .contains(PermissionType.leaveChannel)) - OptionListTile( + StreamOptionListTile( tileColor: StreamChatTheme.of(context).colorTheme.appBg, separatorColor: StreamChatTheme.of(context).colorTheme.disabled, title: AppLocalizations.of(context).leaveGroup, @@ -730,7 +729,7 @@ class _GroupInfoScreenState extends State { child: _buildTextInputSection(modalSetState), ), Expanded( - child: UserListView( + child: StreamUserListView( selectedUsers: {}, onUserTap: (user, _) async { _searchController!.clear(); @@ -900,7 +899,7 @@ class _GroupInfoScreenState extends State { Center( child: Padding( padding: const EdgeInsets.all(16.0), - child: UserAvatar( + child: StreamUserAvatar( user: user, constraints: BoxConstraints.tightFor( height: 64.0, diff --git a/packages/stream_chat_v1/lib/home_page.dart b/packages/stream_chat_v1/lib/home_page.dart index a53dd2c..e37b862 100644 --- a/packages/stream_chat_v1/lib/home_page.dart +++ b/packages/stream_chat_v1/lib/home_page.dart @@ -4,7 +4,6 @@ import 'package:example/channel_page.dart'; import 'package:example/notifications_service.dart'; import 'package:example/routes/app_routes.dart'; import 'package:example/routes/routes.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; diff --git a/packages/stream_chat_v1/lib/main.dart b/packages/stream_chat_v1/lib/main.dart index fc4ed9b..31717ca 100644 --- a/packages/stream_chat_v1/lib/main.dart +++ b/packages/stream_chat_v1/lib/main.dart @@ -4,7 +4,6 @@ import 'package:example/choose_user_page.dart'; import 'package:example/home_page.dart'; import 'package:example/localizations.dart'; import 'package:example/splash_screen.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; diff --git a/packages/stream_chat_v1/lib/new_chat_screen.dart b/packages/stream_chat_v1/lib/new_chat_screen.dart index eb247c3..ffd9554 100644 --- a/packages/stream_chat_v1/lib/new_chat_screen.dart +++ b/packages/stream_chat_v1/lib/new_chat_screen.dart @@ -130,7 +130,7 @@ class _NewChatScreenState extends State { ), centerTitle: true, ), - body: ConnectionStatusBuilder( + body: StreamConnectionStatusBuilder( statusBuilder: (context, status) { String statusString = ''; bool showStatus = true; @@ -147,7 +147,7 @@ class _NewChatScreenState extends State { statusString = AppLocalizations.of(context).disconnected; break; } - return InfoTile( + return StreamInfoTile( showMessage: showStatus, tileAnchor: Alignment.topCenter, childAnchor: Alignment.topCenter, @@ -200,7 +200,7 @@ class _NewChatScreenState extends State { .overlay, shape: BoxShape.circle, ), - child: UserAvatar( + child: StreamUserAvatar( showOnlineStatus: false, user: user, constraints: BoxConstraints.tightFor( @@ -288,7 +288,7 @@ class _NewChatScreenState extends State { behavior: HitTestBehavior.opaque, onPanDown: (_) => FocusScope.of(context).unfocus(), child: UsersBloc( - child: UserListView( + child: StreamUserListView( selectedUsers: _selectedUsers, groupAlphabetically: _isSearchActive ? false : true, @@ -366,7 +366,7 @@ class _NewChatScreenState extends State { future: channel!.initialized, builder: (context, snapshot) { if (snapshot.data == true) { - return MessageListView(); + return StreamMessageListView(); } return Center( @@ -384,7 +384,7 @@ class _NewChatScreenState extends State { }, ), ), - MessageInput( + StreamMessageInput( focusNode: _messageInputFocusNode, preMessageSending: (message) async { await channel!.watch(); diff --git a/packages/stream_chat_v1/lib/new_group_chat_screen.dart b/packages/stream_chat_v1/lib/new_group_chat_screen.dart index 2d0842a..a2a2ec5 100644 --- a/packages/stream_chat_v1/lib/new_group_chat_screen.dart +++ b/packages/stream_chat_v1/lib/new_group_chat_screen.dart @@ -88,7 +88,7 @@ class _NewGroupChatScreenState extends State { ) ], ), - body: ConnectionStatusBuilder( + body: StreamConnectionStatusBuilder( statusBuilder: (context, status) { String statusString = ''; bool showStatus = true; @@ -105,7 +105,7 @@ class _NewGroupChatScreenState extends State { statusString = AppLocalizations.of(context).disconnected; break; } - return InfoTile( + return StreamInfoTile( showMessage: showStatus, tileAnchor: Alignment.topCenter, childAnchor: Alignment.topCenter, @@ -136,7 +136,7 @@ class _NewGroupChatScreenState extends State { children: [ Stack( children: [ - UserAvatar( + StreamUserAvatar( onlineIndicatorAlignment: Alignment(0.9, 0.9), user: user, @@ -229,7 +229,7 @@ class _NewGroupChatScreenState extends State { behavior: HitTestBehavior.opaque, onPanDown: (_) => FocusScope.of(context).unfocus(), child: UsersBloc( - child: UserListView( + child: StreamUserListView( selectedUsers: _selectedUsers, pullToRefresh: false, groupAlphabetically: _isSearchActive ? false : true, diff --git a/packages/stream_chat_v1/lib/pinned_messages_screen.dart b/packages/stream_chat_v1/lib/pinned_messages_screen.dart index a3470bd..6c2eaec 100644 --- a/packages/stream_chat_v1/lib/pinned_messages_screen.dart +++ b/packages/stream_chat_v1/lib/pinned_messages_screen.dart @@ -21,7 +21,7 @@ class PinnedMessagesScreen extends StatefulWidget { final ShowMessageCallback? onShowMessage; - final MessageThemeData messageTheme; + final StreamMessageThemeData messageTheme; const PinnedMessagesScreen({ required this.messageTheme, @@ -166,7 +166,7 @@ class _PinnedMessagesScreenState extends State { var text = data[position].message.text ?? ''; return ListTile( - leading: UserAvatar( + leading: StreamUserAvatar( user: user, constraints: BoxConstraints.tightFor( width: 40.0, diff --git a/packages/stream_chat_v1/lib/splash_screen.dart b/packages/stream_chat_v1/lib/splash_screen.dart index 2c89228..9e72572 100644 --- a/packages/stream_chat_v1/lib/splash_screen.dart +++ b/packages/stream_chat_v1/lib/splash_screen.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/scheduler.dart'; import 'package:lottie/lottie.dart'; mixin SplashScreenStateMixin on State diff --git a/packages/stream_chat_v1/lib/thread_page.dart b/packages/stream_chat_v1/lib/thread_page.dart index f61130c..6ffd5e3 100644 --- a/packages/stream_chat_v1/lib/thread_page.dart +++ b/packages/stream_chat_v1/lib/thread_page.dart @@ -44,13 +44,13 @@ class _ThreadPageState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: StreamChatTheme.of(context).colorTheme.appBg, - appBar: ThreadHeader( + appBar: StreamThreadHeader( parent: widget.parent, ), body: Column( children: [ Expanded( - child: MessageListView( + child: StreamMessageListView( parentMessage: widget.parent, initialScrollIndex: widget.initialScrollIndex, initialAlignment: widget.initialAlignment, @@ -62,14 +62,14 @@ class _ThreadPageState extends State { return defaultMessage.copyWith( onReplyTap: _reply, deletedBottomRowBuilder: (context, message) { - return const VisibleFootnote(); + return const StreamVisibleFootnote(); }, ); }, ), ), if (widget.parent.type != 'deleted') - MessageInput( + StreamMessageInput( focusNode: _focusNode, messageInputController: _messageInputController, ), diff --git a/packages/stream_chat_v1/lib/user_mentions_page.dart b/packages/stream_chat_v1/lib/user_mentions_page.dart index fa2d834..4d266a1 100644 --- a/packages/stream_chat_v1/lib/user_mentions_page.dart +++ b/packages/stream_chat_v1/lib/user_mentions_page.dart @@ -10,7 +10,7 @@ class UserMentionsPage extends StatelessWidget { Widget build(BuildContext context) { final user = StreamChat.of(context).currentUser!; return MessageSearchBloc( - child: MessageSearchListView( + child: StreamMessageSearchListView( filters: Filter.in_('members', [user.id]), messageFilters: Filter.custom( operator: r'$contains',