From a2ee5b35a5a7f39a0e74e3aa8a24ab1d45570ed8 Mon Sep 17 00:00:00 2001 From: "audric.sabatier" Date: Mon, 16 Jan 2023 09:37:40 -0500 Subject: [PATCH] ADD : Display all messages in conv --- .idea/libraries/Dart_Packages.xml | 396 +++++++++--------- .idea/libraries/Dart_SDK.xml | 38 +- .../lib/controller/controller.dart | 6 +- .../messaging/message_database_service.dart | 7 +- .../lib/views/pages/main/p_conversation.dart | 48 ++- .../lib/views/pages/main/w_messages.dart | 6 +- 6 files changed, 260 insertions(+), 241 deletions(-) diff --git a/.idea/libraries/Dart_Packages.xml b/.idea/libraries/Dart_Packages.xml index 158d1b1..9d9042e 100644 --- a/.idea/libraries/Dart_Packages.xml +++ b/.idea/libraries/Dart_Packages.xml @@ -5,798 +5,798 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/libraries/Dart_SDK.xml b/.idea/libraries/Dart_SDK.xml index cb79f3d..008f0f6 100644 --- a/.idea/libraries/Dart_SDK.xml +++ b/.idea/libraries/Dart_SDK.xml @@ -1,25 +1,25 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + diff --git a/Sources/dafl_project_flutter/lib/controller/controller.dart b/Sources/dafl_project_flutter/lib/controller/controller.dart index ac34f06..dde3f1c 100644 --- a/Sources/dafl_project_flutter/lib/controller/controller.dart +++ b/Sources/dafl_project_flutter/lib/controller/controller.dart @@ -26,12 +26,12 @@ class Controller { /// FIREBASE Messaging - void sendMessage(Message message, String idSender, String idReceiver){ + void sendMessage(Message message, String idSender, String idReceiver) { _messageAccess.sendMessage(message, idSender, idReceiver); } - Stream> getMessage(String chatId){ - return _messageAccess.getMessage(chatId); + Stream> getMessage(String idSender, String idReceiver) { + return _messageAccess.getMessage(idSender, idReceiver); } diff --git a/Sources/dafl_project_flutter/lib/services/messaging/message_database_service.dart b/Sources/dafl_project_flutter/lib/services/messaging/message_database_service.dart index 7b07e3c..d0f743e 100644 --- a/Sources/dafl_project_flutter/lib/services/messaging/message_database_service.dart +++ b/Sources/dafl_project_flutter/lib/services/messaging/message_database_service.dart @@ -4,7 +4,7 @@ import 'package:cloud_firestore/cloud_firestore.dart'; class MessageDatabaseService{ // Make an unique chat ID between 2 client. Look like 'User1-User2' - static String _getChatId(String idSender, String idReceiver){ + String _getChatId(String idSender, String idReceiver) { // Test to always have the same id if (idSender.hashCode <= idReceiver.hashCode) return '$idSender-${idReceiver}'; @@ -12,6 +12,7 @@ class MessageDatabaseService{ return '${idReceiver}-$idSender'; } + // Send a message from an user to an other void sendMessage(Message message, String idSender, String idReceiver) { String chatId = _getChatId(idSender, idReceiver); @@ -47,12 +48,12 @@ class MessageDatabaseService{ } // Get the massages from Firestore - Stream> getMessage(String chatId) { + Stream> getMessage(String idSender, String idReceiver) { + String chatId = _getChatId(idSender, idReceiver); return FirebaseFirestore.instance .collection('messages') .doc(chatId) .collection(chatId) .snapshots().map(_getAllMessages); } - } \ No newline at end of file diff --git a/Sources/dafl_project_flutter/lib/views/pages/main/p_conversation.dart b/Sources/dafl_project_flutter/lib/views/pages/main/p_conversation.dart index 86e7ae1..66b487e 100644 --- a/Sources/dafl_project_flutter/lib/views/pages/main/p_conversation.dart +++ b/Sources/dafl_project_flutter/lib/views/pages/main/p_conversation.dart @@ -24,10 +24,7 @@ class _ConversationPageState extends State { final messageTextField = TextEditingController(); void sendMessage(String content, String idSender, String idReceiver) { - Message messageToSend = Message( - idSender: idSender, - idReceiver: idReceiver, - content: content); + Message messageToSend = Message(idSender: idSender, idReceiver: idReceiver, content: content); MyApp.controller.sendMessage(messageToSend, idSender, idReceiver); @@ -176,18 +173,32 @@ class _ConversationPageState extends State { ), ), body: SingleChildScrollView( - child: Container( - color: const Color(0xFF141414), - height: height * 0.92, - width: double.infinity, - child: ListView.builder( - controller: listScrollController, - physics: const BouncingScrollPhysics(), - itemCount: messages.length, - itemBuilder: (context, index) { - return messages[index]; - })), - ), + child: Container( + color: const Color(0xFF141414), + height: height * 0.92, + width: double.infinity, + child: Flexible( + child: StreamBuilder>( + stream: MyApp.controller.getMessage(MyApp.controller.getIdDafl(), receiver), + builder: (BuildContext context, + AsyncSnapshot> snapshot) { + if (snapshot.hasData) { + List listMessage = + snapshot.data ?? List.from([]); + return ListView.builder( + padding: EdgeInsets.all(10.0), + itemBuilder: (context, index) => + messageWidget(listMessage[index]), + itemCount: listMessage.length, + reverse: true, + controller: listScrollController, + ); + } else { + return Center(child: Container()); + } + }, + ), + ))), bottomSheet: BottomAppBar( color: const Color(0xFF141414), child: Row( @@ -229,7 +240,10 @@ class _ConversationPageState extends State { onTap: isNull ? null : () { - sendMessage(messageTextField.text, MyApp.controller.getIdDafl(), receiver); + sendMessage( + messageTextField.text, + MyApp.controller.getIdDafl(), + receiver); if (listScrollController.hasClients) { final position = listScrollController.position.maxScrollExtent; diff --git a/Sources/dafl_project_flutter/lib/views/pages/main/w_messages.dart b/Sources/dafl_project_flutter/lib/views/pages/main/w_messages.dart index 0cc378c..1b4bad4 100644 --- a/Sources/dafl_project_flutter/lib/views/pages/main/w_messages.dart +++ b/Sources/dafl_project_flutter/lib/views/pages/main/w_messages.dart @@ -222,7 +222,11 @@ class ListConfirmedWidget extends StatelessWidget { Widget build(BuildContext context) { return StreamBuilder>>( - stream: FirebaseFirestore.instance.collection('users').doc('felix').collection('felix').snapshots(), + stream: FirebaseFirestore.instance + .collection('users') + .doc(MyApp.controller.getIdDafl()) + .collection(MyApp.controller.getIdDafl()) + .snapshots(), builder: (_, snapshot) { if (snapshot.hasError) return Text('Error = ${snapshot.error}');