addMessage function
Implementation
Future<String?> addMessage(String text,
String stringChatMessage, /// strings.get(103) /// "Chat message"
) async{
User? user = FirebaseAuth.instance.currentUser;
if (user == null)
return "User == null";
try{
await FirebaseFirestore.instance.collection("chatRoom")
.doc(chatRoomId)
.collection("chats")
.add({
"sendBy": user.uid,
'read': false,
"message": text,
'time': FieldValue.serverTimestamp(),
});
await FirebaseFirestore.instance.collection("chatRoom").doc(chatRoomId).set({
"all": FieldValue.increment(1),
"unread_$chatId": FieldValue.increment(1),
"last_message": text,
"last_message_time": FieldValue.serverTimestamp(),
"last_message_from": user.uid,
}, SetOptions(merge: true));
var querySnapshot = await FirebaseFirestore.instance.collection("listusers").doc(chatId).get();
if (querySnapshot.exists){
var data = querySnapshot.data();
if (data != null){
if (data["blockedUsers"] != null){
List<String> _blockedUsers = [];
for (dynamic key in data['blockedUsers']){
_blockedUsers.add(key.toString());
}
if (!_blockedUsers.contains(user.uid)){
await FirebaseFirestore.instance.collection("listusers").doc(chatId).set({
"unread_chat": FieldValue.increment(1),
}, SetOptions(merge: true));
sendMessage(text, stringChatMessage, chatId, false, appSettings.cloudKey); /// "Chat message"
}
}
}
}
}catch(ex){
return "model addMessage " + ex.toString();
}
return null;
}