diff --git a/Sources/dafl_project_flutter/lib/controller/controller.dart b/Sources/dafl_project_flutter/lib/controller/controller.dart index b575465..dbac70f 100644 --- a/Sources/dafl_project_flutter/lib/controller/controller.dart +++ b/Sources/dafl_project_flutter/lib/controller/controller.dart @@ -29,6 +29,10 @@ class Controller { _messageAccess.sendMessage(message, idSender, idReceiver); } + Stream> getMessage(String chatId){ + return _messageAccess.getMessage(chatId); + } + void save(User userToSave) { saver.save(userToSave); } diff --git a/Sources/dafl_project_flutter/lib/firebase_services/message_database_services.dart b/Sources/dafl_project_flutter/lib/firebase_services/message_database_services.dart index 00955b1..f82040d 100644 --- a/Sources/dafl_project_flutter/lib/firebase_services/message_database_services.dart +++ b/Sources/dafl_project_flutter/lib/firebase_services/message_database_services.dart @@ -4,8 +4,10 @@ import 'package:cloud_firestore/cloud_firestore.dart'; class MessageDatabaseServices{ + // 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}'; else @@ -13,8 +15,10 @@ class MessageDatabaseServices{ } + + // Send a message from an user to an other void sendMessage(Message message, String idSender, String idReceiver) { - String chatId = _getChatId(idSender, idReceiver); + String chatId = getChatId(idSender, idReceiver); var documentReference = FirebaseFirestore.instance .collection('messages') @@ -27,6 +31,7 @@ class MessageDatabaseServices{ }); } + // Get a message from a snapshot Firestore Message _getMessage(DocumentSnapshot> snapshot) { var data = snapshot.data(); if (data == null) @@ -35,13 +40,14 @@ class MessageDatabaseServices{ return Message.fromMap(data); } - + // Get a list of messages from Firestore List _getAllMessages(QuerySnapshot> snapshot) { return snapshot.docs.map((doc) { return _getMessage(doc); }).toList(); } + // Get the massages from Firestore Stream> getMessage(String chatId) { return FirebaseFirestore.instance .collection('messages')