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}');