Moved all functions to chatfunction

This commit is contained in:
2025-03-27 01:31:42 +00:00
parent 24f056f4cd
commit 671874851f
+18 -5
View File
@@ -39,7 +39,12 @@ Future<dynamic> main(final _context) async {
createdAt = DateTime.parse(_context.req.bodyJson['\$createdAt']); createdAt = DateTime.parse(_context.req.bodyJson['\$createdAt']);
updatedAt = DateTime.parse(_context.req.bodyJson['\$updatedAt']); updatedAt = DateTime.parse(_context.req.bodyJson['\$updatedAt']);
_context.log(_messages); // _context.log(_messages);
Map allMessages = {};
for (var pp = 0; pp < _messages.length; pp++) {
allMessages.addAll(json.decode(_messages[pp]));
}
if (createdAt.isAtSameMomentAs(updatedAt)) { if (createdAt.isAtSameMomentAs(updatedAt)) {
// //
@@ -57,7 +62,7 @@ Future<dynamic> main(final _context) async {
} else { } else {
// //
for (String _member in _members) { for (String _member in _members) {
await updateConversation(_context, _member, _messages); await updateConversation(_context, _member, allMessages[_member]);
} }
} }
} }
@@ -74,6 +79,7 @@ dynamic createConversation(final _context, String _member, var _members) async {
List<dynamic> _chatIdMap = []; List<dynamic> _chatIdMap = [];
List<dynamic> _detailMap = []; List<dynamic> _detailMap = [];
List<dynamic> _lastModifiedMap = [];
var _userDetail = await _database.getDocument( var _userDetail = await _database.getDocument(
databaseId: _databaseId, databaseId: _databaseId,
@@ -99,6 +105,7 @@ dynamic createConversation(final _context, String _member, var _members) async {
if (_conversationDetail != null) { if (_conversationDetail != null) {
_chatIdMap = _conversationDetail.data['chatId']; _chatIdMap = _conversationDetail.data['chatId'];
_detailMap = _conversationDetail.data['details']; _detailMap = _conversationDetail.data['details'];
_lastModifiedMap = _conversationDetail.data['lastModified'];
await _database.deleteDocument( await _database.deleteDocument(
databaseId: _databaseId, databaseId: _databaseId,
@@ -112,10 +119,12 @@ dynamic createConversation(final _context, String _member, var _members) async {
_chatIdMap.add(_documentId); _chatIdMap.add(_documentId);
_detailMap.add(_data); _detailMap.add(_data);
_lastModifiedMap.add(DateTime.now().toUtc().toIso8601String());
Map<String, dynamic> _conversationMap = { Map<String, dynamic> _conversationMap = {
"chatId": _chatIdMap, "chatId": _chatIdMap,
"details": _detailMap "details": _detailMap,
"lastModified": _lastModifiedMap
}; };
await _database.createDocument( await _database.createDocument(
@@ -137,10 +146,11 @@ dynamic createConversation(final _context, String _member, var _members) async {
// //
dynamic updateConversation(var _context, var _member, var _messages) async { dynamic updateConversation(var _context, var _member, var _messages) async {
// //
Map _message = json.decode(_messages[_messages.length - 1]); var _message = _messages[_messages.length - 1];
if (_message.isNotEmpty) { if (_message.isNotEmpty) {
List<dynamic> _chatIdMap = []; List<dynamic> _chatIdMap = [];
List<dynamic> _detailMap = []; List<dynamic> _detailMap = [];
List<dynamic> _lastModifiedMap = [];
var _conversationDetail; var _conversationDetail;
try { try {
@@ -158,9 +168,11 @@ dynamic updateConversation(var _context, var _member, var _messages) async {
if (_conversationDetail != null) { if (_conversationDetail != null) {
_chatIdMap = _conversationDetail.data['chatId']; _chatIdMap = _conversationDetail.data['chatId'];
_detailMap = _conversationDetail.data['details']; _detailMap = _conversationDetail.data['details'];
_lastModifiedMap = _conversationDetail.data['lastModified'];
var _index = _chatIdMap.indexOf(_documentId); var _index = _chatIdMap.indexOf(_documentId);
Map _detail = json.decode(_detailMap[_index]); Map _detail = json.decode(_detailMap[_index]);
_lastModifiedMap[_index] = DateTime.now().toUtc().toIso8601String();
_detail['unseenCount'] += 1; _detail['unseenCount'] += 1;
_detail['lastMessage'] = _message['message']; _detail['lastMessage'] = _message['message'];
@@ -172,7 +184,8 @@ dynamic updateConversation(var _context, var _member, var _messages) async {
Map<String, dynamic> _conversationMap = { Map<String, dynamic> _conversationMap = {
"chatId": _chatIdMap, "chatId": _chatIdMap,
"details": _detailMap "details": _detailMap,
"lastModified": _lastModifiedMap
}; };
await _database.updateDocument( await _database.updateDocument(