|
|
@ -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')
|
|
|
|