addchat method
dynamic
addchat()
Implementation
addchat(String uid1, String firstusername, String uid2, String secondusername,
Map<String, dynamic> chatmessage) async {
DocumentReference user1 = await usercoll.doc(uid1);
DocumentReference user2 = await usercoll.doc(uid2);
DocumentSnapshot snap1 = await user1.get();
DocumentSnapshot snap2 = await user2.get();
DocumentReference chat1 = await chats.doc(uid1);
DocumentReference chat2 = await chats.doc(uid2);
DocumentSnapshot user1Snapshot = await chat1.get();
DocumentSnapshot user2Snapshot = await chat2.get();
String chatid = "";
if (uid1.codeUnitAt(0) < uid2.codeUnitAt(0)) {
chatid = "${uid1}_$uid2";
} else {
chatid = "${uid2}_$uid1";
}
List<dynamic> user1chatswith = await snap1.get('chatswith');
List<dynamic> user2chatswith = await snap2.get('chatswith');
if (!user1chatswith.contains(uid2)) {
// user1chatswith.remove("${uid1}_$uid2");
user1.update({
"chatswith": FieldValue.arrayUnion([uid2 + "_" + secondusername]),
});
user2.update({
"chatswith": FieldValue.arrayUnion([uid1 + "_" + firstusername]),
});
chats.doc(chatid).set({
"user1": uid1,
"user2": uid2,
chatid: chatid,
});
chats.doc(chatid).collection("messages").add(chatmessage);
chats.doc(chatid).update({
"recentmessages": chatmessage['message'],
"recentsender": chatmessage['sender'],
"time": chatmessage['time'].toString(),
});
} else {
chats.doc(chatid).collection("messages").add(chatmessage);
chats.doc(chatid).update({
"recentmessages": chatmessage['message'],
"recentsender": chatmessage['sender'],
"time": chatmessage['time'].toString(),
});
}
}