findOrCreateGroupConversation static method
dynamic
findOrCreateGroupConversation({
- String? conversationId,
- dynamic peers,
- dynamic peersFirebaseId,
- dynamic peersDetail,
- dynamic groupName,
- dynamic thumbnail,
Implementation
static findOrCreateGroupConversation({
String? conversationId,
peers,
peersFirebaseId,
peersDetail,
groupName,
thumbnail,
}) async {
QuerySnapshot q = await FirebaseFirestore.instance
.collection(kCollectionCONVERSATIONS)
.where(kDbCONVERSATIONTYPE, isEqualTo: kDbGroup)
.where(kDbCONVERSATIONID, isEqualTo: conversationId ?? '-1')
.get();
if (q.size > 0) {
return q.docs.first.data();
} else {
String id = conversationId ?? generateConversationId();
Map<String, dynamic> data = {
kDbCONVERSATIONID: id,
kDbCONVERSATIONTYPE: kDbGroup,
kDbGROUPNAME: groupName,
kDbTHUMBNAIL: thumbnail,
kDbLASTMESSAGETIME: 0,
kDbENCRYPTKEY: generateEncryptKey(),
kDbMEMBERS: [...peers, loggedUsername],
kDbMEMBERSFIREBASEID: [...peersFirebaseId, loggedFirebaseId],
kDbMEMBERSDETAIL: [
...peersDetail,
{kDbUSERNAME: loggedUsername}
],
};
await FirebaseFirestore.instance
.collection(kCollectionCONVERSATIONS)
.doc(id)
.set(data);
return data;
}
}