|
|
@ -2,7 +2,7 @@ import 'package:dafl_project_flutter/model/message.dart';
|
|
|
|
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
|
|
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MessageDatabase {
|
|
|
|
class MessageDatabaseService{
|
|
|
|
String _getChatId(String idSender, String idReceiver) {
|
|
|
|
String _getChatId(String idSender, String idReceiver) {
|
|
|
|
if (idSender.hashCode <= idReceiver.hashCode)
|
|
|
|
if (idSender.hashCode <= idReceiver.hashCode)
|
|
|
|
return '$idSender-${idReceiver}';
|
|
|
|
return '$idSender-${idReceiver}';
|
|
|
@ -26,4 +26,27 @@ class MessageDatabase {
|
|
|
|
transaction.set(documentReference, message.toHashMap());
|
|
|
|
transaction.set(documentReference, message.toHashMap());
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Message _getMessage(DocumentSnapshot<Map<String, dynamic>> snapshot) {
|
|
|
|
|
|
|
|
var data = snapshot.data();
|
|
|
|
|
|
|
|
if (data == null)
|
|
|
|
|
|
|
|
throw Exception("no data in database");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Message.fromMap(data);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Message> _getAllMessages(QuerySnapshot<Map<String, dynamic>> snapshot) {
|
|
|
|
|
|
|
|
return snapshot.docs.map((doc) {
|
|
|
|
|
|
|
|
return _getMessage(doc);
|
|
|
|
|
|
|
|
}).toList();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Stream<List<Message>> getMessage(String chatId) {
|
|
|
|
|
|
|
|
return FirebaseFirestore.instance
|
|
|
|
|
|
|
|
.collection('messages')
|
|
|
|
|
|
|
|
.doc(chatId)
|
|
|
|
|
|
|
|
.collection(chatId)
|
|
|
|
|
|
|
|
.snapshots().map(_getAllMessages);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|