ADD : controller call Firestore database accesser
continuous-integration/drone/push Build is passing Details

#MSG01/chat_firebase
Audric SABATIER 2 years ago
parent 77de0b8384
commit 27e970a3b9

@ -29,6 +29,10 @@ class Controller {
_messageAccess.sendMessage(message, idSender, idReceiver); _messageAccess.sendMessage(message, idSender, idReceiver);
} }
Stream<List<Message>> getMessage(String chatId){
return _messageAccess.getMessage(chatId);
}
void save(User userToSave) { void save(User userToSave) {
saver.save(userToSave); saver.save(userToSave);
} }

@ -4,8 +4,10 @@ import 'package:cloud_firestore/cloud_firestore.dart';
class MessageDatabaseServices{ 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) if (idSender.hashCode <= idReceiver.hashCode)
return '$idSender-${idReceiver}'; return '$idSender-${idReceiver}';
else else
@ -13,8 +15,10 @@ class MessageDatabaseServices{
} }
// Send a message from an user to an other
void sendMessage(Message message, String idSender, String idReceiver) { void sendMessage(Message message, String idSender, String idReceiver) {
String chatId = _getChatId(idSender, idReceiver); String chatId = getChatId(idSender, idReceiver);
var documentReference = FirebaseFirestore.instance var documentReference = FirebaseFirestore.instance
.collection('messages') .collection('messages')
@ -27,6 +31,7 @@ class MessageDatabaseServices{
}); });
} }
// Get a message from a snapshot Firestore
Message _getMessage(DocumentSnapshot<Map<String, dynamic>> snapshot) { Message _getMessage(DocumentSnapshot<Map<String, dynamic>> snapshot) {
var data = snapshot.data(); var data = snapshot.data();
if (data == null) if (data == null)
@ -35,13 +40,14 @@ class MessageDatabaseServices{
return Message.fromMap(data); return Message.fromMap(data);
} }
// Get a list of messages from Firestore
List<Message> _getAllMessages(QuerySnapshot<Map<String, dynamic>> snapshot) { List<Message> _getAllMessages(QuerySnapshot<Map<String, dynamic>> snapshot) {
return snapshot.docs.map((doc) { return snapshot.docs.map((doc) {
return _getMessage(doc); return _getMessage(doc);
}).toList(); }).toList();
} }
// Get the massages from Firestore
Stream<List<Message>> getMessage(String chatId) { Stream<List<Message>> getMessage(String chatId) {
return FirebaseFirestore.instance return FirebaseFirestore.instance
.collection('messages') .collection('messages')

Loading…
Cancel
Save