diff --git a/packages/flutter_community_chat/lib/flutter_community_chat.dart b/packages/flutter_community_chat/lib/flutter_community_chat.dart index 1fd5684..211f674 100644 --- a/packages/flutter_community_chat/lib/flutter_community_chat.dart +++ b/packages/flutter_community_chat/lib/flutter_community_chat.dart @@ -39,6 +39,8 @@ class _CommunityChatState extends State { MaterialPageRoute(builder: (context) => widget), ); + void _pop(BuildContext context) => Navigator.of(context).pop(); + Future _onPressStartChat(BuildContext context) async { if (!_isFetchingUsers) { _isFetchingUsers = true; @@ -50,12 +52,11 @@ class _CommunityChatState extends State { NewChatScreen( options: widget.options, translations: widget.translations, - onPressCreateChat: (user) { - _onPressChat( - context, - PersonalChatModel(user: user), - ); - }, + onPressCreateChat: (user) => _onPressChat( + context, + PersonalChatModel(user: user), + popBeforePush: true, + ), users: users, ), ); @@ -64,22 +65,29 @@ class _CommunityChatState extends State { } } - Future _onPressChat(BuildContext context, ChatModel chat) async { - widget.dataProvider.setChat(chat); - _push( - context, - ChatDetailScreen( - options: widget.options, - translations: widget.translations, - chat: chat, - chatMessages: widget.dataProvider.getMessagesStream(), - onPressSelectImage: (ChatModel chat) => - _onPressSelectImage(context, chat), - onMessageSubmit: (ChatModel chat, String content) => - widget.dataProvider.sendTextMessage(content), - ), - ); - } + Future _onPressChat( + BuildContext context, + ChatModel chat, { + bool popBeforePush = false, + }) => + widget.dataProvider.setChat(chat).then((_) { + if (popBeforePush) { + _pop(context); + } + _push( + context, + ChatDetailScreen( + options: widget.options, + translations: widget.translations, + chat: chat, + chatMessages: widget.dataProvider.getMessagesStream(), + onPressSelectImage: (ChatModel chat) => + _onPressSelectImage(context, chat), + onMessageSubmit: (ChatModel chat, String content) => + widget.dataProvider.sendTextMessage(content), + ), + ); + }); void _beforeUploadingImage() => ScaffoldMessenger.of(context).showSnackBar( SnackBar( diff --git a/packages/flutter_community_chat/pubspec.lock b/packages/flutter_community_chat/pubspec.lock index ab559d6..1556081 100644 --- a/packages/flutter_community_chat/pubspec.lock +++ b/packages/flutter_community_chat/pubspec.lock @@ -179,7 +179,7 @@ packages: description: path: "packages/flutter_community_chat_interface" ref: HEAD - resolved-ref: f3cae1bf88f7f55c485aeab86a95cdff776373d4 + resolved-ref: "82b9b0be80eb0d0c36b72432c7517a6d04cecb20" url: "https://github.com/Iconica-Development/flutter_community_chat.git" source: git version: "0.0.1" @@ -188,7 +188,7 @@ packages: description: path: "packages/flutter_community_chat_view" ref: HEAD - resolved-ref: f3cae1bf88f7f55c485aeab86a95cdff776373d4 + resolved-ref: "82b9b0be80eb0d0c36b72432c7517a6d04cecb20" url: "https://github.com/Iconica-Development/flutter_community_chat.git" source: git version: "0.0.1" @@ -235,7 +235,7 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" http: dependency: transitive description: diff --git a/packages/flutter_community_chat_firebase/lib/service/firebase_message_service.dart b/packages/flutter_community_chat_firebase/lib/service/firebase_message_service.dart index e83ae0f..e4b8c3c 100644 --- a/packages/flutter_community_chat_firebase/lib/service/firebase_message_service.dart +++ b/packages/flutter_community_chat_firebase/lib/service/firebase_message_service.dart @@ -33,9 +33,16 @@ class FirebaseMessageService { ChatModel? _chat; Future setChat(ChatModel chat) async { - if (chat is PersonalChatModel) { - _chat = await chatService.getChatByUser(chat.user) ?? chat; + if (chat.id == null && chat is PersonalChatModel) { + var chatWithUser = await chatService.getChatByUser(chat.user); + + if (chatWithUser != null) { + _chat = chatWithUser; + return; + } } + + _chat = chat; } Future _beforeSendMessage() async { @@ -116,7 +123,9 @@ class FirebaseMessageService { _subscription = _startListeningForMessages(_chat!); } }, - onCancel: () => _subscription?.cancel(), + onCancel: () { + _subscription?.cancel(); + }, ); return _controller.stream; diff --git a/packages/flutter_community_chat_firebase/pubspec.lock b/packages/flutter_community_chat_firebase/pubspec.lock index 95b8c68..ca2b513 100644 --- a/packages/flutter_community_chat_firebase/pubspec.lock +++ b/packages/flutter_community_chat_firebase/pubspec.lock @@ -228,7 +228,7 @@ packages: description: path: "packages/flutter_community_chat_interface" ref: HEAD - resolved-ref: f3cae1bf88f7f55c485aeab86a95cdff776373d4 + resolved-ref: "82b9b0be80eb0d0c36b72432c7517a6d04cecb20" url: "https://github.com/Iconica-Development/flutter_community_chat.git" source: git version: "0.0.1" @@ -264,7 +264,7 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" http: dependency: transitive description: diff --git a/packages/flutter_community_chat_interface/pubspec.lock b/packages/flutter_community_chat_interface/pubspec.lock index dc431b3..9c167b1 100644 --- a/packages/flutter_community_chat_interface/pubspec.lock +++ b/packages/flutter_community_chat_interface/pubspec.lock @@ -140,7 +140,7 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" lints: dependency: transitive description: diff --git a/packages/flutter_community_chat_view/example/pubspec.lock b/packages/flutter_community_chat_view/example/pubspec.lock index 5711407..3f32248 100644 --- a/packages/flutter_community_chat_view/example/pubspec.lock +++ b/packages/flutter_community_chat_view/example/pubspec.lock @@ -186,7 +186,7 @@ packages: description: path: "packages/flutter_community_chat_interface" ref: HEAD - resolved-ref: f3cae1bf88f7f55c485aeab86a95cdff776373d4 + resolved-ref: "82b9b0be80eb0d0c36b72432c7517a6d04cecb20" url: "https://github.com/Iconica-Development/flutter_community_chat.git" source: git version: "0.0.1" @@ -224,7 +224,7 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" http: dependency: transitive description: diff --git a/packages/flutter_community_chat_view/pubspec.lock b/packages/flutter_community_chat_view/pubspec.lock index 569316c..52cc1f0 100644 --- a/packages/flutter_community_chat_view/pubspec.lock +++ b/packages/flutter_community_chat_view/pubspec.lock @@ -179,7 +179,7 @@ packages: description: path: "packages/flutter_community_chat_interface" ref: HEAD - resolved-ref: f3cae1bf88f7f55c485aeab86a95cdff776373d4 + resolved-ref: "82b9b0be80eb0d0c36b72432c7517a6d04cecb20" url: "https://github.com/Iconica-Development/flutter_community_chat.git" source: git version: "0.0.1" @@ -210,7 +210,7 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" http: dependency: transitive description: