refactor(llc, core, ui): Deprecate .user, .userStream in favor of .currentUser, .currentUserStream

Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
Sahil Kumar
2021-07-26 14:57:29 +05:30
committed by xsahil03x
parent 171074368f
commit f7b9511adb
55 changed files with 230 additions and 170 deletions
+5
View File
@@ -1,5 +1,10 @@
## Upcoming
🔄 Changed
- `client.user` is now deprecated in favor of `client.currentUser`.
- `client.userStream` is now deprecated in favor of `client.currentUserStream`.
🐞 Fixed
- [#563](https://github.com/GetStream/stream-chat-flutter/issues/563): `Channel.stopWatching()` not working
+1 -1
View File
@@ -245,5 +245,5 @@ class _MessageViewState extends State<MessageView> {
/// Helper extension for quickly retrieving
/// the current user id from a [StreamChatClient].
extension on StreamChatClient {
String get uid => state.user!.id;
String get uid => state.currentUser!.id;
}
@@ -65,12 +65,12 @@ class Channel {
/// Returns true if the channel is muted
bool get isMuted =>
_client.state.user?.channelMutes
_client.state.currentUser?.channelMutes
.any((element) => element.channel.cid == cid) ==
true;
/// Returns true if the channel is muted as a stream
Stream<bool>? get isMutedStream => _client.state.userStream
Stream<bool>? get isMutedStream => _client.state.currentUserStream
.map((event) =>
event!.channelMutes.any((element) => element.channel.cid == cid) ==
true)
@@ -382,7 +382,7 @@ class Channel {
// ignore: parameter_assignments
message = message.copyWith(
createdAt: message.createdAt,
user: _client.state.user,
user: _client.state.currentUser,
quotedMessage: quotedMessage,
status: MessageSendingStatus.sending,
attachments: message.attachments.map(
@@ -693,7 +693,7 @@ class Channel {
_checkInitialized();
final messageId = message.id;
final now = DateTime.now();
final user = _client.state.user;
final user = _client.state.currentUser;
final latestReactions = [...message.latestReactions ?? <Reaction>[]];
if (enforceUnique) {
@@ -750,7 +750,7 @@ class Channel {
Future<EmptyResponse> deleteReaction(
Message message, Reaction reaction) async {
final type = reaction.type;
final user = _client.state.user;
final user = _client.state.currentUser;
final reactionCounts = {...message.reactionCounts ?? <String, int>{}};
if (reactionCounts.containsKey(type)) {
@@ -1314,7 +1314,7 @@ class ChannelClientState {
void _computeInitialUnread() {
final userRead = channelState.read.firstWhereOrNull(
(r) => r.user.id == _channel._client.state.user?.id,
(r) => r.user.id == _channel._client.state.currentUser?.id,
);
if (userRead != null) {
unreadCount = userRead.unreadMessages;
@@ -1431,7 +1431,7 @@ class ChannelClientState {
void _listenReactionDeleted() {
_subscriptions.add(_channel.on(EventType.reactionDeleted).listen((event) {
final userId = _channel.client.state.user!.id;
final userId = _channel.client.state.currentUser!.id;
final message = event.message!.copyWith(
ownReactions: [...event.message!.latestReactions!]
..removeWhere((it) => it.userId != userId),
@@ -1442,7 +1442,7 @@ class ChannelClientState {
void _listenReactions() {
_subscriptions.add(_channel.on(EventType.reactionNew).listen((event) {
final userId = _channel.client.state.user!.id;
final userId = _channel.client.state.currentUser!.id;
final message = event.message!.copyWith(
ownReactions: [...event.message!.latestReactions!]
..removeWhere((it) => it.userId != userId),
@@ -1458,7 +1458,7 @@ class ChannelClientState {
EventType.reactionUpdated,
)
.listen((event) {
final userId = _channel.client.state.user!.id;
final userId = _channel.client.state.currentUser!.id;
final message = event.message!.copyWith(
ownReactions: [...event.message!.latestReactions!]
..removeWhere((it) => it.userId != userId),
@@ -1552,7 +1552,7 @@ class ChannelClientState {
if (userReadIndex != null && userReadIndex != -1) {
final userRead = readList.removeAt(userReadIndex);
if (userRead.user.id == _channel._client.state.user!.id) {
if (userRead.user.id == _channel._client.state.currentUser!.id) {
unreadCount = 0;
}
readList.add(Read(
@@ -1642,11 +1642,12 @@ class ChannelClientState {
int get unreadCount => _unreadCountController.value;
bool _countMessageAsUnread(Message message) {
final userId = _channel.client.state.user?.id;
final userIsMuted = _channel.client.state.user?.mutes.firstWhereOrNull(
(m) => m.user.id == message.user?.id,
) !=
null;
final userId = _channel.client.state.currentUser?.id;
final userIsMuted =
_channel.client.state.currentUser?.mutes.firstWhereOrNull(
(m) => m.user.id == message.user?.id,
) !=
null;
return message.silent != true &&
message.shadowed != true &&
message.user?.id != userId &&
@@ -1795,7 +1796,7 @@ class ChannelClientState {
(event) {
if (event.user != null) {
final user = event.user!;
if (user.id != _channel.client.state.user?.id) {
if (user.id != _channel.client.state.currentUser?.id) {
_typings[user] = event;
_typingEventsController.add(_typings);
}
@@ -1808,7 +1809,7 @@ class ChannelClientState {
(event) {
if (event.user != null) {
final user = event.user!;
if (user.id != _channel.client.state.user?.id) {
if (user.id != _channel.client.state.currentUser?.id) {
_typings.remove(event.user);
_typingEventsController.add(_typings);
}
+25 -15
View File
@@ -316,7 +316,7 @@ class StreamChatClient {
);
final ownUser = OwnUser.fromUser(user);
state.user = ownUser;
state.currentUser = ownUser;
if (!connectWebSocket) {
return ownUser;
@@ -342,12 +342,12 @@ class StreamChatClient {
/// Creates a new WebSocket connection with the current user.
Future<OwnUser> openConnection() async {
assert(
state.user != null,
state.currentUser != null,
'User is not set on client, '
'use `connectUser` or `connectAnonymousUser` instead',
);
final user = state.user!;
final user = state.currentUser!;
logger.info('Opening web-socket connection for ${user.id}');
@@ -386,7 +386,7 @@ class StreamChatClient {
void closeConnection() {
if (wsConnectionStatus == ConnectionStatus.disconnected) return;
logger.info('Closing web-socket connection for ${state.user?.id}');
logger.info('Closing web-socket connection for ${state.currentUser?.id}');
_wsConnectionStatus = ConnectionStatus.disconnected;
_connectionStatusSubscription?.cancel();
@@ -397,7 +397,7 @@ class StreamChatClient {
void _handleHealthCheckEvent(Event event) {
final user = event.me;
if (user != null) state.user = user;
if (user != null) state.currentUser = user;
final connectionId = event.connectionId;
if (connectionId != null) {
@@ -1298,7 +1298,7 @@ class StreamChatClient {
/// If [flushChatPersistence] is true the client deletes all offline
/// user's data.
Future<void> disconnectUser({bool flushChatPersistence = false}) async {
logger.info('Disconnecting user : ${state.user?.id}');
logger.info('Disconnecting user : ${state.currentUser?.id}');
// resetting state
state.dispose();
@@ -1344,7 +1344,7 @@ class ClientState {
.where((event) => event.me != null)
.map((e) => e.me)
.listen((user) {
_userController.add(user);
_currentUserController.add(user);
final totalUnreadCount = user?.totalUnreadCount;
if (totalUnreadCount != null) {
_totalUnreadCountController.add(totalUnreadCount);
@@ -1394,8 +1394,8 @@ class ClientState {
void _listenUserUpdated() {
_subscriptions.add(_client.on(EventType.userUpdated).listen((event) {
if (event.user!.id == user!.id) {
user = OwnUser.fromJson(event.user!.toJson());
if (event.user!.id == currentUser!.id) {
currentUser = OwnUser.fromJson(event.user!.toJson());
}
updateUser(event.user);
}));
@@ -1418,8 +1418,8 @@ class ClientState {
final StreamChatClient _client;
/// Update user information
set user(OwnUser? user) {
_userController.add(user);
set currentUser(OwnUser? user) {
_currentUserController.add(user);
}
/// Update all the [users] with the provided [userList]
@@ -1436,10 +1436,20 @@ class ClientState {
void updateUser(User? user) => updateUsers([user]);
/// The current user
OwnUser? get user => _userController.valueOrNull;
OwnUser? get currentUser => _currentUserController.valueOrNull;
/// The current user as a stream
Stream<OwnUser?> get userStream => _userController.stream;
Stream<OwnUser?> get currentUserStream => _currentUserController.stream;
/// The current user
@Deprecated('Use `.currentUser` instead, Will be removed in future releases')
OwnUser? get user => _currentUserController.valueOrNull;
/// The current user as a stream
@Deprecated(
'Use `.currentUserStream` instead, Will be removed in future releases',
)
Stream<OwnUser?> get userStream => _currentUserController.stream;
/// The current user
Map<String, User> get users => _usersController.value;
@@ -1471,7 +1481,7 @@ class ClientState {
}
final _channelsController = BehaviorSubject<Map<String, Channel>>.seeded({});
final _userController = BehaviorSubject<OwnUser?>();
final _currentUserController = BehaviorSubject<OwnUser?>();
final _usersController = BehaviorSubject<Map<String, User>>.seeded({});
final _unreadChannelsController = BehaviorSubject<int>.seeded(0);
final _totalUnreadCountController = BehaviorSubject<int>.seeded(0);
@@ -1479,7 +1489,7 @@ class ClientState {
/// Call this method to dispose this object
void dispose() {
_subscriptions.forEach((s) => s.cancel());
_userController.close();
_currentUserController.close();
_unreadChannelsController.close();
_totalUnreadCountController.close();
channels.values.forEach((c) => c.dispose());
@@ -155,7 +155,7 @@ void main() {
group('`.openConnection`', () {
test('should throw if state does not contain user', () async {
expect(client.state.user, isNull);
expect(client.state.currentUser, isNull);
try {
await client.openConnection();
} catch (e) {
@@ -164,7 +164,7 @@ void main() {
});
test('should throw if connection is already in progress', () async {
expect(client.state.user, isNull);
expect(client.state.currentUser, isNull);
try {
await client.connectAnonymousUser();
await client.openConnection();
@@ -179,7 +179,7 @@ void main() {
});
test('should throw if connection is already available', () async {
expect(client.state.user, isNull);
expect(client.state.currentUser, isNull);
try {
await client.connectAnonymousUser();
// waiting 300ms for `wsConnectionStatusStream` to emit
@@ -799,7 +799,7 @@ void main() {
});
test('`.disconnectUser` should reset state and user', () async {
expect(client.state.user, isNotNull);
expect(client.state.currentUser, isNotNull);
expect(client.wsConnectionStatus, ConnectionStatus.connected);
expectLater(
@@ -810,7 +810,7 @@ void main() {
await client.disconnectUser();
expect(client.state.user, isNull);
expect(client.state.currentUser, isNull);
expect(client.wsConnectionStatus, ConnectionStatus.disconnected);
});
});
+1 -1
View File
@@ -89,7 +89,7 @@ class FakeChatApi extends Fake implements StreamChatApi {
class FakeClientState extends Fake implements ClientState {
@override
OwnUser? get user => OwnUser(id: 'test-user-id');
OwnUser? get currentUser => OwnUser(id: 'test-user-id');
@override
int totalUnreadCount = 0;
@@ -5,6 +5,11 @@
- Added `MessageListView.paginationLimit`
- Allow the various ListView widgets to be themed via ThemeData classes
🔄 Changed
- `StreamChat.of(context).user` is now deprecated in favor of `StreamChat.of(context).currentUser`.
- `StreamChat.of(context).userStream` is now deprecated in favor of `StreamChat.of(context).currentUserStream`.
🐞 Fixed
- Fix floating date divider not having a fixed size
@@ -103,7 +103,7 @@ class ChannelListPage extends StatelessWidget {
: null,
filter: Filter.in_(
'members',
[StreamChat.of(context).user!.id],
[StreamChat.of(context).currentUser!.id],
),
sort: const [SortOption('last_message_at')],
pagination: const PaginationParams(
@@ -80,7 +80,7 @@ class ChannelListPage extends StatelessWidget {
child: ChannelListView(
filter: Filter.in_(
'members',
[StreamChat.of(context).user!.id],
[StreamChat.of(context).currentUser!.id],
),
sort: const [SortOption('last_message_at')],
pagination: const PaginationParams(
@@ -81,7 +81,7 @@ class ChannelListPage extends StatelessWidget {
child: ChannelListView(
filter: Filter.in_(
'members',
[StreamChat.of(context).user!.id],
[StreamChat.of(context).currentUser!.id],
),
channelPreviewBuilder: _channelPreviewBuilder,
// sort: [SortOption('last_message_at')],
@@ -66,7 +66,7 @@ class ChannelListPage extends StatelessWidget {
child: ChannelListView(
filter: Filter.in_(
'members',
[StreamChat.of(context).user!.id],
[StreamChat.of(context).currentUser!.id],
),
sort: const [SortOption('last_message_at')],
pagination: const PaginationParams(
@@ -72,7 +72,7 @@ class ChannelListPage extends StatelessWidget {
child: ChannelListView(
filter: Filter.in_(
'members',
[StreamChat.of(context).user!.id],
[StreamChat.of(context).currentUser!.id],
),
sort: const [SortOption('last_message_at')],
pagination: const PaginationParams(
@@ -115,7 +115,8 @@ class ChannelPage extends StatelessWidget {
MessageWidget _,
) {
final message = details.message;
final isCurrentUser = StreamChat.of(context).user!.id == message.user!.id;
final isCurrentUser =
StreamChat.of(context).currentUser!.id == message.user!.id;
final textAlign = isCurrentUser ? TextAlign.right : TextAlign.left;
final color = isCurrentUser ? Colors.blueGrey : Colors.blue;
@@ -99,7 +99,7 @@ class ChannelListPage extends StatelessWidget {
child: ChannelListView(
filter: Filter.in_(
'members',
[StreamChat.of(context).user!.id],
[StreamChat.of(context).currentUser!.id],
),
sort: const [SortOption('last_message_at')],
pagination: const PaginationParams(
@@ -138,7 +138,8 @@ class AttachmentActionsModal extends StatelessWidget {
);
},
),
if (StreamChat.of(context).user?.id == message.user?.id)
if (StreamChat.of(context).currentUser?.id ==
message.user?.id)
_buildButton(
context,
'Delete',
@@ -141,7 +141,7 @@ class ChannelAvatar extends StatelessWidget {
return child;
}
final currentUser = streamChat.user!;
final currentUser = streamChat.currentUser!;
final otherMembers = channel.state!.members
.where((it) => it.userId != currentUser.id)
.toList(growable: false);
@@ -149,7 +149,7 @@ class ChannelAvatar extends StatelessWidget {
// our own space, no other members
if (otherMembers.isEmpty) {
return BetterStreamBuilder<User>(
stream: streamChat.client.state.userStream.map((it) => it!),
stream: streamChat.client.state.currentUserStream.map((it) => it!),
initialData: currentUser,
builder: (context, user) => UserAvatar(
borderRadius: borderRadius ?? previewTheme?.borderRadius,
@@ -27,8 +27,8 @@ class _ChannelBottomSheetState extends State<ChannelBottomSheet> {
final members = channel.state?.members ?? [];
final userAsMember =
members.firstWhere((e) => e.user?.id == _streamChatState.user?.id);
final userAsMember = members
.firstWhere((e) => e.user?.id == _streamChatState.currentUser?.id);
final isOwner = userAsMember.role == 'owner';
return Material(
@@ -247,7 +247,7 @@ class _ChannelBottomSheetState extends State<ChannelBottomSheet> {
);
if (res == true) {
final channel = _streamChannelState.channel;
final user = _streamChatState.user;
final user = _streamChatState.currentUser;
if (user != null) {
await channel.removeMembers([user.id]);
}
@@ -67,7 +67,7 @@ class ChannelInfo extends StatelessWidget {
.subtitle,
);
} else {
final userId = StreamChat.of(context).user?.id;
final userId = StreamChat.of(context).currentUser?.id;
final otherMember = members?.firstWhereOrNull(
(element) => element.userId != userId,
);
@@ -95,7 +95,7 @@ class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget {
@override
Widget build(BuildContext context) {
final _client = client ?? StreamChat.of(context).client;
final user = _client.state.user;
final user = _client.state.currentUser;
return ConnectionStatusBuilder(
statusBuilder: (context, status) {
var statusString = '';
@@ -552,7 +552,7 @@ class _ChannelListViewState extends State<ChannelListView> {
'owner',
].contains(channel.state!.members
.firstWhereOrNull(
(m) => m.userId == channel.client.state.user?.id)
(m) => m.userId == channel.client.state.currentUser?.id)
?.role))
IconSlideAction(
color: backgroundColor,
@@ -46,8 +46,8 @@ class ChannelName extends StatelessWidget {
builder: (context, constraints) {
var title = 'No title';
if (extraData['name'] == null) {
final otherMembers =
members?.where((member) => member.userId != client.user!.id);
final otherMembers = members
?.where((member) => member.userId != client.currentUser!.id);
if (otherMembers?.length == 1) {
if (otherMembers!.first.user != null) {
title = otherMembers.first.user!.name;
@@ -101,7 +101,7 @@ class ChannelPreview extends StatelessWidget {
if (members?.isEmpty == true ||
members?.any((Member e) =>
e.user!.id ==
channel.client.state.user?.id) !=
channel.client.state.currentUser?.id) !=
true) {
return const SizedBox();
}
@@ -124,7 +124,7 @@ class ChannelPreview extends StatelessWidget {
(m) => !m.isDeleted && m.shadowed != true,
);
if (lastMessage?.user?.id ==
streamChatState.user?.id) {
streamChatState.currentUser?.id) {
return Padding(
padding: const EdgeInsets.only(right: 4),
child: SendingIndicator(
@@ -133,7 +133,8 @@ class ChannelPreview extends StatelessWidget {
isMessageRead: channel.state!.read
?.where((element) =>
element.user.id !=
channel.client.state.user!.id)
channel
.client.state.currentUser!.id)
.where((element) => element.lastRead
.isAfter(lastMessage.createdAt))
.isNotEmpty ==
@@ -101,7 +101,7 @@ class _MessageActionsModalState extends State<MessageActionsModal> {
Widget _showMessageOptionsModal() {
final mediaQueryData = MediaQuery.of(context);
final size = mediaQueryData.size;
final user = StreamChat.of(context).user;
final user = StreamChat.of(context).currentUser;
final roughMaxSize = 2 * size.width / 3;
var messageTextLength = widget.message.text!.length;
@@ -703,7 +703,8 @@ class _MessageListViewState extends State<MessageListView> {
final unreadCount = snapshot.data!.item2;
final showUnreadCount = unreadCount > 0 &&
streamChannel!.channel.state!.members.any((e) =>
e.userId == streamChannel!.channel.client.state.user!.id);
e.userId ==
streamChannel!.channel.client.state.currentUser!.id);
return Positioned(
bottom: 8,
right: 8,
@@ -809,9 +810,10 @@ class _MessageListViewState extends State<MessageListView> {
Widget buildParentMessage(
Message message,
) {
final isMyMessage = message.user!.id == StreamChat.of(context).user!.id;
final isMyMessage =
message.user!.id == StreamChat.of(context).currentUser!.id;
final isOnlyEmoji = message.text!.isOnlyEmoji;
final currentUser = StreamChat.of(context).user;
final currentUser = StreamChat.of(context).currentUser;
final members = StreamChannel.of(context).channel.state?.members ?? [];
final currentUserMember =
members.firstWhereOrNull((e) => e.user!.id == currentUser!.id);
@@ -896,7 +898,7 @@ class _MessageListViewState extends State<MessageListView> {
);
}
final userId = StreamChat.of(context).user!.id;
final userId = StreamChat.of(context).currentUser!.id;
final isMyMessage = message.user!.id == userId;
final nextMessage = index - 1 >= 0 ? messages[index - 1] : null;
final isNextUserSame =
@@ -959,7 +961,7 @@ class _MessageListViewState extends State<MessageListView> {
? BorderSide.none
: null;
final currentUser = StreamChat.of(context).user;
final currentUser = StreamChat.of(context).currentUser;
final members = StreamChannel.of(context).channel.state?.members ?? [];
final currentUserMember =
members.firstWhere((e) => e.user!.id == currentUser!.id);
@@ -1165,7 +1167,7 @@ class _MessageListViewState extends State<MessageListView> {
_topPaginationActive = false;
}
if (event.message!.user!.id ==
streamChannel!.channel.client.state.user!.id) {
streamChannel!.channel.client.state.currentUser!.id) {
WidgetsBinding.instance!.addPostFrameCallback((_) {
_scrollController?.jumpTo(
index: 0,
@@ -42,7 +42,7 @@ class MessageReactionsModal extends StatelessWidget {
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
final user = StreamChat.of(context).user;
final user = StreamChat.of(context).currentUser;
final roughMaxSize = 2 * size.width / 3;
var messageTextLength = message.text!.length;
@@ -49,7 +49,9 @@ class MessageSearchItem extends StatelessWidget {
title: Row(
children: [
Text(
user.id == StreamChat.of(context).user?.id ? 'You' : user.name,
user.id == StreamChat.of(context).currentUser?.id
? 'You'
: user.name,
style: chatThemeData.channelPreviewTheme.title,
),
if (channelName != null) ...[
@@ -810,7 +810,7 @@ class _MessageWidgetState extends State<MessageWidget>
}
Widget _buildQuotedMessage() {
final isMyMessage = widget.message.user?.id == _streamChat.user?.id;
final isMyMessage = widget.message.user?.id == _streamChat.currentUser?.id;
final onTap = widget.message.quotedMessage?.isDeleted != true &&
widget.onQuotedMessageTap != null
? () => widget.onQuotedMessageTap!(widget.message.quotedMessageId)
@@ -993,7 +993,7 @@ class _MessageWidgetState extends State<MessageWidget>
Widget _buildReactionIndicator(
BuildContext context,
) {
final ownId = _streamChat.user!.id;
final ownId = _streamChat.currentUser!.id;
final reactionsMap = <String, Reaction>{};
widget.message.latestReactions?.forEach((element) {
if (!reactionsMap.containsKey(element.type) ||
@@ -1054,10 +1054,10 @@ class _MessageWidgetState extends State<MessageWidget>
showReactionPickerIndicator: widget.showReactions &&
(widget.message.status == MessageSendingStatus.sent),
showPinHighlight: false,
showUserAvatar:
widget.message.user!.id == channel.client.state.user!.id
? DisplayWidget.gone
: DisplayWidget.show,
showUserAvatar: widget.message.user!.id ==
channel.client.state.currentUser!.id
? DisplayWidget.gone
: DisplayWidget.show,
),
onCopyTap: (message) =>
Clipboard.setData(ClipboardData(text: message.text)),
@@ -1118,7 +1118,7 @@ class _MessageWidgetState extends State<MessageWidget>
(widget.message.status == MessageSendingStatus.sent),
showPinHighlight: false,
showUserAvatar:
widget.message.user!.id == channel.client.state.user!.id
widget.message.user!.id == channel.client.state.currentUser!.id
? DisplayWidget.gone
: DisplayWidget.show,
),
@@ -1276,7 +1276,7 @@ class _MessageWidgetState extends State<MessageWidget>
Widget _buildPinnedMessage(Message message) {
final pinnedBy = message.pinnedBy;
final pinnedByMe = _streamChat.user!.id == pinnedBy!.id;
final pinnedByMe = _streamChat.currentUser!.id == pinnedBy!.id;
return Padding(
padding: const EdgeInsets.only(left: 8, right: 8, top: 4, bottom: 8),
@@ -123,7 +123,7 @@ class ReactionBubble extends StatelessWidget {
);
final chatThemeData = StreamChatTheme.of(context);
final userId = StreamChat.of(context).user?.id;
final userId = StreamChat.of(context).currentUser?.id;
return Padding(
padding: const EdgeInsets.symmetric(
horizontal: 4,
@@ -127,10 +127,20 @@ class StreamChatState extends State<StreamChat> {
}
/// The current user
User? get user => widget.client.state.user;
@Deprecated('Use `.currentUser` instead, Will be removed in future releases')
User? get user => widget.client.state.currentUser;
/// The current user as a stream
Stream<User?> get userStream => widget.client.state.userStream;
@Deprecated(
'Use `.currentUserStream` instead, Will be removed in future releases',
)
Stream<User?> get userStream => widget.client.state.currentUserStream;
/// The current user
User? get currentUser => widget.client.state.currentUser;
/// The current user as a stream
Stream<User?> get currentUserStream => widget.client.state.currentUserStream;
@override
void initState() {
@@ -35,7 +35,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -77,7 +77,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id2'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id2'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -119,7 +119,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -160,7 +160,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -207,7 +207,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -254,7 +254,7 @@ void main() {
when(() => mockChannel.updateMessage(any()))
.thenAnswer((_) async => UpdateMessageResponse());
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final message = Message(
text: 'test',
@@ -308,7 +308,7 @@ void main() {
when(() => mockChannel.updateMessage(any()))
.thenAnswer((_) async => UpdateMessageResponse());
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final message = Message(
text: 'test',
@@ -357,7 +357,7 @@ void main() {
when(() => mockChannel.deleteMessage(any()))
.thenAnswer((_) async => EmptyResponse());
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final message = Message(
user: User(
@@ -399,7 +399,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final imageDownloader = MockAttachmentDownloader();
@@ -454,7 +454,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final fileDownloader = MockAttachmentDownloader();
@@ -18,8 +18,9 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => clientState.currentUser).thenReturn(user);
when(() => clientState.currentUserStream)
.thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -82,8 +83,9 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => clientState.currentUser).thenReturn(user);
when(() => clientState.currentUserStream)
.thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -149,8 +151,9 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => clientState.currentUser).thenReturn(user);
when(() => clientState.currentUserStream)
.thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -217,8 +220,9 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => clientState.currentUser).thenReturn(user);
when(() => clientState.currentUserStream)
.thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -293,8 +297,9 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => clientState.currentUser).thenReturn(user);
when(() => clientState.currentUserStream)
.thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -360,8 +365,9 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => clientState.currentUser).thenReturn(user);
when(() => clientState.currentUserStream)
.thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -17,7 +17,7 @@ void main() {
final channelState = MockChannelState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
@@ -56,7 +56,7 @@ void main() {
final channelState = MockChannelState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
@@ -135,7 +135,7 @@ void main() {
final currentUser = OwnUser(id: 'user-id');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(currentUser);
when(() => clientState.currentUser).thenReturn(currentUser);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
@@ -207,7 +207,7 @@ void main() {
final channelState = MockChannelState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
when(() => channel.extraDataStream).thenAnswer((i) => Stream.value({
@@ -13,7 +13,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => client.wsConnectionStatusStream)
.thenAnswer((_) => Stream.value(ConnectionStatus.connected));
@@ -30,7 +30,7 @@ void main() {
await tester.pumpAndSettle();
final userAvatar = tester.widget<UserAvatar>(find.byType(UserAvatar));
expect(userAvatar.user, clientState.user);
expect(userAvatar.user, clientState.currentUser);
expect(find.byType(StreamNeumorphicButton), findsOneWidget);
expect(find.text('Stream Chat'), findsOneWidget);
},
@@ -43,7 +43,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => client.wsConnectionStatusStream)
.thenAnswer((_) => Stream.value(ConnectionStatus.disconnected));
@@ -72,7 +72,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => client.wsConnectionStatusStream)
.thenAnswer((_) => Stream.value(ConnectionStatus.connecting));
@@ -101,7 +101,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => client.wsConnectionStatusStream)
.thenAnswer((_) => Stream.value(ConnectionStatus.connecting));
@@ -139,7 +139,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => client.wsConnectionStatusStream)
.thenAnswer((_) => Stream.value(ConnectionStatus.connecting));
@@ -173,7 +173,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => client.wsConnectionStatusStream)
.thenAnswer((_) => Stream.value(ConnectionStatus.connecting));
@@ -16,7 +16,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -18,8 +18,9 @@ void main() {
when(() => channel.cid).thenReturn('cid');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(user);
when(() => clientState.userStream).thenAnswer((_) => Stream.value(user));
when(() => clientState.currentUser).thenReturn(user);
when(() => clientState.currentUserStream)
.thenAnswer((_) => Stream.value(user));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -13,7 +13,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidget(MaterialApp(
home: StreamChat(
@@ -14,7 +14,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidget(MaterialApp(
home: StreamChat(
@@ -46,7 +46,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -99,7 +99,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -152,7 +152,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -17,7 +17,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -15,7 +15,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidget(
MaterialApp(
@@ -16,7 +16,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -14,7 +14,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidget(MaterialApp(
home: StreamChat(
@@ -44,7 +44,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidget(MaterialApp(
home: StreamChat(
@@ -20,7 +20,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -66,7 +66,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -117,7 +117,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -172,7 +172,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -218,7 +218,7 @@ void main() {
final clientState = MockClientState();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -265,7 +265,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -314,7 +314,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -364,7 +364,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -414,7 +414,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.sendMessage(any()))
.thenAnswer((_) async => SendMessageResponse());
@@ -464,7 +464,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.updateMessage(any()))
.thenAnswer((_) async => UpdateMessageResponse());
@@ -514,7 +514,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -568,7 +568,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => client.flagMessage(any()))
.thenThrow(StreamChatNetworkError(ChatErrorCode.internalSystemError));
@@ -624,7 +624,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => client.flagMessage(any()))
.thenThrow(StreamChatNetworkError(ChatErrorCode.inputError));
@@ -680,7 +680,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final themeData = ThemeData();
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -734,7 +734,7 @@ void main() {
final channel = MockChannel();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.deleteMessage(any()))
.thenThrow(StreamChatNetworkError(ChatErrorCode.internalSystemError));
@@ -16,7 +16,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -16,7 +16,7 @@ void main() {
final themeData = ThemeData();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -61,7 +61,7 @@ void main() {
final themeData = ThemeData();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final streamTheme = StreamChatThemeData.fromTheme(themeData);
@@ -21,7 +21,7 @@ void main() {
final streamTheme = StreamChatThemeData.fromTheme(themeData);
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -66,7 +66,7 @@ void main() {
final streamTheme = StreamChatThemeData.fromTheme(themeData);
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -16,7 +16,7 @@ void main() {
final themeData = ThemeData.light();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
final theme = StreamChatThemeData.fromTheme(themeData);
await tester.pumpWidgetBuilder(
@@ -53,7 +53,7 @@ void main() {
final theme = StreamChatThemeData.fromTheme(themeData);
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidgetBuilder(
StreamChat(
@@ -90,7 +90,7 @@ void main() {
final theme = StreamChatThemeData.fromTheme(themeData);
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidgetBuilder(
StreamChat(
@@ -135,7 +135,7 @@ void main() {
final theme = StreamChatThemeData.fromTheme(themeData);
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidgetBuilder(
StreamChat(
@@ -179,7 +179,7 @@ void main() {
final themeData = ThemeData();
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
await tester.pumpWidgetBuilder(
StreamChat(
@@ -17,7 +17,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -68,7 +68,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -120,7 +120,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -16,7 +16,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -81,7 +81,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -16,7 +16,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -16,7 +16,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => channel.lastMessageAt).thenReturn(lastMessageAt);
when(() => channel.state).thenReturn(channelState);
when(() => channel.client).thenReturn(client);
@@ -58,7 +58,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.channels).thenReturn({
channel.cid!: channel,
});
@@ -98,7 +98,7 @@ void main() {
final lastMessageAt = DateTime.parse('2020-06-22 12:00:00');
when(() => client.state).thenReturn(clientState);
when(() => clientState.user).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id'));
when(() => clientState.channels).thenReturn({
channel.cid!: channel,
});
@@ -3,6 +3,11 @@
✅ Added
- Added `MessageListCore.paginationLimit`
🔄 Changed
- `StreamChatCore.of(context).user` is now deprecated in favor of `StreamChatCore.of(context).currentUser`.
- `StreamChatCore.of(context).userStream` is now deprecated in favor of `StreamChatCore.of(context).currentUserStream`.
## 2.0.0
🛑️ Breaking Changes from `1.5.3`
@@ -87,7 +87,7 @@ class HomeScreen extends StatelessWidget {
filter: Filter.and([
Filter.equal('type', 'messaging'),
Filter.in_('members', [
StreamChatCore.of(context).user!.id,
StreamChatCore.of(context).currentUser!.id,
])
]),
emptyBuilder: (BuildContext context) => const Center(
@@ -336,7 +336,7 @@ class _MessageScreenState extends State<MessageScreen> {
/// below, we add two simple extensions to the [StreamChatClient] and [Channel].
extension on StreamChatClient {
/// Fetches the current user id.
String get uid => state.user!.id;
String get uid => state.currentUser!.id;
}
extension on Channel {
@@ -116,7 +116,7 @@ class MessageListCoreState extends State<MessageListCore> {
bool get _isThreadConversation => widget.parentMessage != null;
OwnUser? get _currentUser => _streamChannel!.channel.client.state.user;
OwnUser? get _currentUser => _streamChannel!.channel.client.state.currentUser;
var _messages = <Message>[];
@@ -98,10 +98,20 @@ class StreamChatCoreState extends State<StreamChatCore>
Widget build(BuildContext context) => widget.child;
/// The current user
User? get user => client.state.user;
@Deprecated('Use `.currentUser` instead, Will be removed in future releases')
User? get user => client.state.currentUser;
/// The current user as a stream
Stream<User?> get userStream => client.state.userStream;
@Deprecated(
'Use `.currentUserStream` instead, Will be removed in future releases',
)
Stream<User?> get userStream => client.state.currentUserStream;
/// The current user
User? get currentUser => client.state.currentUser;
/// The current user as a stream
Stream<User?> get currentUserStream => client.state.currentUserStream;
StreamSubscription<ConnectivityResult>? _connectivitySubscription;
@@ -126,7 +136,7 @@ class StreamChatCoreState extends State<StreamChatCore>
if (!_isInForeground) return;
if (_isConnectionAvailable) {
if (client.wsConnectionStatus == ConnectionStatus.disconnected &&
user != null) {
currentUser != null) {
client.openConnection();
}
} else {
@@ -163,7 +173,7 @@ class StreamChatCoreState extends State<StreamChatCore>
AppLifecycleState.resumed,
AppLifecycleState.inactive,
].contains(state);
if (user != null) {
if (currentUser != null) {
if (_isInForeground) {
_onForeground();
} else {
@@ -451,7 +451,7 @@ void main() {
expect(find.byKey(streamChatCoreKey), findsOneWidget);
expect(find.byKey(childKey), findsOneWidget);
when(() => mockClient.state.userStream)
when(() => mockClient.state.currentUserStream)
.thenAnswer((_) => userController.stream);
final streamChatCoreState = tester.state<StreamChatCoreState>(
@@ -462,7 +462,7 @@ void main() {
userController.add(ownUser);
await expectLater(
streamChatCoreState.userStream,
streamChatCoreState.currentUserStream,
emits(ownUser),
);
@@ -255,5 +255,5 @@ class _MessageViewState extends State<MessageView> {
/// Helper extension for quickly retrieving
/// the current user id from a [StreamChatClient].
extension on StreamChatClient {
String get uid => state.user!.id;
String get uid => state.currentUser!.id;
}