chore: migrate to latest dependencies

This commit is contained in:
Sahil Kumar
2021-10-05 16:23:30 +05:30
committed by xsahil03x
parent 38a6884465
commit 865ae2cbd7
22 changed files with 142 additions and 120 deletions
@@ -6,7 +6,7 @@ class ImagePickerImpl extends ImagePickerRepository {
@override
Future<File?> pickImage() async {
final picker = ImagePicker();
final pickedFile = await picker.getImage(
final pickedFile = await picker.pickImage(
source: ImageSource.gallery,
maxWidth: 400,
);
@@ -8,7 +8,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
final StreamChatClient _client;
@override
Future<ChatUser> connectUser(ChatUser user, String? token) async {
Future<ChatUser> connectUser(ChatUser user, String token) async {
Map<String, dynamic> extraData = {};
if (user.image != null) {
extraData['image'] = user.image;
@@ -16,7 +16,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
if (user.name != null) {
extraData['name'] = user.name;
}
await _client.disconnect();
await _client.disconnectUser();
await _client.connectUser(
User(id: user.id!, extraData: extraData as Map<String, Object>),
token,
@@ -28,7 +28,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
Future<List<ChatUser>> getChatUsers() async {
final result = await _client.queryUsers();
final chatUsers = result.users
.where((element) => element.id != _client.state.user!.id)
.where((element) => element.id != _client.state.currentUser!.id)
.map(
(e) => ChatUser(
id: e.id,
@@ -42,7 +42,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
@override
Future<String> getToken(String userId) async {
return _client.devToken(userId);
return _client.devToken(userId).rawValue;
}
@override
@@ -52,7 +52,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
final channel = _client.channel('messaging', id: channelId, extraData: {
'name': name!,
'image': image!,
'members': [_client.state.user!.id, ...members!],
'members': [_client.state.currentUser!.id, ...members!],
});
await channel.watch();
return channel;
@@ -61,11 +61,11 @@ class StreamApiLocalImpl extends StreamApiRepository {
@override
Future<Channel> createSimpleChat(String? friendId) async {
final channel = _client.channel('messaging',
id: '${_client.state.user!.id.hashCode}${friendId.hashCode}',
id: '${_client.state.currentUser!.id.hashCode}${friendId.hashCode}',
extraData: {
'members': [
friendId,
_client.state.user!.id,
_client.state.currentUser!.id,
],
});
await channel.watch();
@@ -74,7 +74,7 @@ class StreamApiLocalImpl extends StreamApiRepository {
@override
Future<void> logout() {
return _client.disconnect();
return _client.disconnectUser();
}
@override
@@ -84,6 +84,6 @@ class StreamApiLocalImpl extends StreamApiRepository {
User(id: userId),
token,
);
return _client.state.user!.name != userId;
return _client.state.currentUser!.name != userId;
}
}
@@ -11,7 +11,7 @@ class StreamApiImpl extends StreamApiRepository {
final StreamChatClient _client;
@override
Future<ChatUser> connectUser(ChatUser user, String? token) async {
Future<ChatUser> connectUser(ChatUser user, String token) async {
Map<String, dynamic> extraData = {};
if (user.image != null) {
extraData['image'] = user.image;
@@ -19,7 +19,7 @@ class StreamApiImpl extends StreamApiRepository {
if (user.name != null) {
extraData['name'] = user.name;
}
await _client.disconnect();
await _client.disconnectUser();
await _client.connectUser(
User(id: user.id!, extraData: extraData as Map<String, Object>),
token,
@@ -31,7 +31,7 @@ class StreamApiImpl extends StreamApiRepository {
Future<List<ChatUser>> getChatUsers() async {
final result = await _client.queryUsers();
final chatUsers = result.users
.where((element) => element.id != _client.state.user!.id)
.where((element) => element.id != _client.state.currentUser!.id)
.map(
(e) => ChatUser(
id: e.id,
@@ -44,7 +44,7 @@ class StreamApiImpl extends StreamApiRepository {
}
@override
Future<String?> getToken(String userId) async {
Future<String> getToken(String userId) async {
//TODO: use your own implementation in Production
final response = await http.post(
Uri.parse('your_backend_url'),
@@ -62,12 +62,13 @@ class StreamApiImpl extends StreamApiRepository {
}
@override
Future<Channel> createGroupChat(String id, String? name, List<String?>? members,
Future<Channel> createGroupChat(
String id, String? name, List<String?>? members,
{String? image}) async {
final channel = _client.channel('messaging', id: id, extraData: {
'name': name!,
'image': image!,
'members': [_client.state.user!.id, ...members!],
'members': [_client.state.currentUser!.id, ...members!],
});
await channel.watch();
return channel;
@@ -76,11 +77,11 @@ class StreamApiImpl extends StreamApiRepository {
@override
Future<Channel> createSimpleChat(String? friendId) async {
final channel = _client.channel('messaging',
id: '${_client.state.user!.id.hashCode}${friendId.hashCode}',
id: '${_client.state.currentUser!.id.hashCode}${friendId.hashCode}',
extraData: {
'members': [
friendId,
_client.state.user!.id,
_client.state.currentUser!.id,
],
});
await channel.watch();
@@ -89,7 +90,7 @@ class StreamApiImpl extends StreamApiRepository {
@override
Future<void> logout() async {
return _client.disconnect();
return _client.disconnectUser();
}
@override
@@ -99,6 +100,6 @@ class StreamApiImpl extends StreamApiRepository {
User(id: userId),
token,
);
return _client.state.user!.name != userId;
return _client.state.currentUser!.name != userId;
}
}
@@ -3,12 +3,21 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart';
abstract class StreamApiRepository {
Future<List<ChatUser>> getChatUsers();
Future<String?> getToken(String userId);
Future<String> getToken(String userId);
Future<bool> connectIfExist(String userId);
Future<ChatUser> connectUser(ChatUser user, String? token);
Future<ChatUser> connectUser(ChatUser user, String token);
Future<Channel> createGroupChat(
String channelId, String? name, List<String?>? members,
{String? image});
String channelId,
String? name,
List<String?>? members, {
String? image,
});
Future<Channel> createSimpleChat(String? friendId);
Future<void> logout();
}
@@ -9,6 +9,7 @@ import '../exceptions/auth_exception.dart';
class ProfileInput {
ProfileInput({this.imageFile, this.name});
final File? imageFile;
final String? name;
}
@@ -36,11 +37,12 @@ class ProfileSignInUseCase {
input.imageFile, 'users/${auth.id}');
}
await _streamApiRepository.connectUser(
ChatUser(
name: input.name,
id: auth.id,
image: image,
),
token);
ChatUser(
name: input.name,
id: auth.id,
image: image,
),
token,
);
}
}
+6 -3
View File
@@ -19,7 +19,10 @@ class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
SystemChrome.setEnabledSystemUIMode(
SystemUiMode.manual,
overlays: [SystemUiOverlay.bottom],
);
return MultiRepositoryProvider(
providers: buildRepositories(_streamChatClient),
@@ -36,9 +39,9 @@ class MyApp extends StatelessWidget {
client: _streamChatClient,
streamChatThemeData:
StreamChatThemeData.fromTheme(Theme.of(context)).copyWith(
ownMessageTheme: MessageTheme(
ownMessageTheme: MessageThemeData(
messageBackgroundColor: Theme.of(context).accentColor,
messageText: TextStyle(color: Colors.white),
messageTextStyle: TextStyle(color: Colors.white),
),
),
);
@@ -80,7 +80,7 @@ class MyChannelPreview extends StatelessWidget {
tag: heroTag!,
child: StreamChannel(
channel: channel,
child: ChannelImage(
child: ChannelAvatar(
onTap: onImageTap,
),
),
@@ -91,8 +91,9 @@ class MyChannelPreview extends StatelessWidget {
children: <Widget>[
Flexible(
child: ChannelName(
textStyle:
StreamChatTheme.of(context).channelPreviewTheme.title,
textStyle: StreamChatTheme.of(context)
.channelPreviewTheme
.titleStyle,
),
),
StreamBuilder<List<Member>>(
@@ -102,7 +103,8 @@ class MyChannelPreview extends StatelessWidget {
if (!snapshot.hasData ||
snapshot.data!.isEmpty ||
!snapshot.data!.any((Member e) =>
e.user!.id == channel.client.state.user!.id)) {
e.user!.id ==
channel.client.state.currentUser!.id)) {
return SizedBox();
}
return ChannelUnreadIndicator(
@@ -122,7 +124,7 @@ class MyChannelPreview extends StatelessWidget {
(m) => !m.isDeleted && m.shadowed != true,
);
if (lastMessage?.user?.id ==
StreamChat.of(context).user!.id) {
StreamChat.of(context).currentUser!.id) {
return Padding(
padding: const EdgeInsets.only(right: 4.0),
child: SendingIndicator(
@@ -131,9 +133,9 @@ class MyChannelPreview extends StatelessWidget {
.channelPreviewTheme
.indicatorIconSize,
isMessageRead: channel.state!.read
?.where((element) =>
.where((element) =>
element.user.id !=
channel.client.state.user!.id)
channel.client.state.currentUser!.id)
.where((element) => element.lastRead
.isAfter(lastMessage.createdAt))
.isNotEmpty ==
@@ -181,7 +183,9 @@ class MyChannelPreview extends StatelessWidget {
return Text(
stringDate,
style: StreamChatTheme.of(context).channelPreviewTheme.lastMessageAt,
style: StreamChatTheme.of(context)
.channelPreviewTheme
.lastMessageAtStyle,
);
},
);
@@ -199,23 +203,29 @@ class MyChannelPreview extends StatelessWidget {
' Channel is muted',
style: StreamChatTheme.of(context)
.channelPreviewTheme
.subtitle!
.subtitleStyle!
.copyWith(
color: StreamChatTheme.of(context)
.channelPreviewTheme
.subtitle!
.subtitleStyle!
.color,
),
),
],
);
}
// TODO
return TypingIndicator(
channel: channel,
alternativeWidget: _buildLastMessage(context),
style: StreamChatTheme.of(context).channelPreviewTheme.subtitle!.copyWith(
color:
StreamChatTheme.of(context).channelPreviewTheme.subtitle!.color,
style: StreamChatTheme.of(context)
.channelPreviewTheme
.subtitleStyle!
.copyWith(
color: StreamChatTheme.of(context)
.channelPreviewTheme
.subtitleStyle!
.color,
),
);
}
@@ -255,23 +265,31 @@ class MyChannelPreview extends StatelessWidget {
text,
lastMessage.mentionedUsers,
lastMessage.attachments,
StreamChatTheme.of(context).channelPreviewTheme.subtitle!.copyWith(
color: StreamChatTheme.of(context)
.channelPreviewTheme
.subtitle!
.color,
fontStyle: (lastMessage.isSystem || lastMessage.isDeleted)
? FontStyle.italic
: FontStyle.normal),
StreamChatTheme.of(context).channelPreviewTheme.subtitle!.copyWith(
color: StreamChatTheme.of(context)
.channelPreviewTheme
.subtitle!
.color,
fontStyle: (lastMessage.isSystem || lastMessage.isDeleted)
? FontStyle.italic
: FontStyle.normal,
fontWeight: FontWeight.bold),
StreamChatTheme.of(context)
.channelPreviewTheme
.subtitleStyle!
.copyWith(
color:
StreamChatTheme.of(context)
.channelPreviewTheme
.subtitleStyle!
.color,
fontStyle: (lastMessage.isSystem || lastMessage.isDeleted)
? FontStyle.italic
: FontStyle.normal),
StreamChatTheme.of(context)
.channelPreviewTheme
.subtitleStyle!
.copyWith(
color:
StreamChatTheme.of(context)
.channelPreviewTheme
.subtitleStyle!
.color,
fontStyle: (lastMessage.isSystem || lastMessage.isDeleted)
? FontStyle.italic
: FontStyle.normal,
fontWeight: FontWeight.bold),
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
@@ -25,7 +25,7 @@ class ChatView extends StatelessWidget {
child: ChannelListView(
filter: Filter.in_(
'members',
[StreamChat.of(context).user!.id],
[StreamChat.of(context).currentUser!.id],
),
sort: [SortOption('last_message_at')],
channelPreviewBuilder: (context, channel) {
@@ -37,10 +37,11 @@ class ChatView extends StatelessWidget {
onImageTap: () {
String? name;
String? image;
final currentUser = StreamChat.of(context).client.state.user;
final currentUser =
StreamChat.of(context).client.state.currentUser;
if (channel.isGroup) {
name = channel.extraData['name'];
image = channel.extraData['image'];
name = channel.extraData['name'] as String?;
image = channel.extraData['image'] as String?;
} else {
final friend = channel.state!.members
.where((element) => element.userId != currentUser!.id)
@@ -10,9 +10,9 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart';
class SettingsView extends StatelessWidget {
@override
Widget build(BuildContext context) {
final user = StreamChat.of(context).client.state.user!;
final user = StreamChat.of(context).client.state.currentUser!;
final image = user.extraData['image'];
final textColor = Theme.of(context).appBarTheme.color;
final textColor = Theme.of(context).appBarTheme.backgroundColor;
return MultiBlocProvider(
providers: [
BlocProvider(
+9 -9
View File
@@ -10,17 +10,17 @@ dependencies:
flutter:
sdk: flutter
flutter_bloc: ^7.0.0
stream_chat_flutter: ^2.0.0-nullsafety.3
uuid: ^3.0.4
flutter_bloc: ^7.1.0
stream_chat_flutter: ^3.0.0
uuid: ^3.0.5
firebase_core: ^1.2.0
google_sign_in: ^5.0.3
firebase_auth: ^1.2.0
firebase_storage: ^8.1.0
shared_preferences: ^2.0.5
firebase_core: ^1.7.0
google_sign_in: ^5.1.1
firebase_auth: ^3.1.2
firebase_storage: ^10.0.4
shared_preferences: ^2.0.8
http: any
collection: ^1.15.0-nullsafety.4
collection: ^1.15.0
dev_dependencies:
flutter_test: