Moved to local functions
This commit is contained in:
@@ -3,85 +3,8 @@
|
||||
// {"message":"Cool Bro, you good?", "senderId": "6793b2543197428f812a", "timeStamp": "2025-01-29T16:36:19.480+00:00", "type": "text"}
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'package:dart_appwrite/dart_appwrite.dart';
|
||||
|
||||
late Databases _database;
|
||||
|
||||
var _conversationDbId;
|
||||
var _documentId;
|
||||
var _databaseId;
|
||||
|
||||
//Default call by function
|
||||
Future<dynamic> main(final context) async {
|
||||
//
|
||||
try {
|
||||
final client = Client()
|
||||
.setEndpoint(
|
||||
Platform.environment['APPWRITE_FUNCTION_API_ENDPOINT'] ?? '')
|
||||
.setProject(Platform.environment['APPWRITE_FUNCTION_PROJECT_ID'] ?? '')
|
||||
.setKey(context.req.headers['x-appwrite-key'] ?? '');
|
||||
|
||||
_database = Databases(client);
|
||||
_conversationDbId = Platform.environment['APPWRITE_COLLECTION_ID'];
|
||||
|
||||
String trigger = context.req.headers['x-appwrite-trigger'];
|
||||
if (trigger == 'event') {
|
||||
List<dynamic> _members = context.req.bodyJson['members'];
|
||||
List<dynamic> _messages = context.req.bodyJson['messages'];
|
||||
_documentId = context.req.bodyJson['\$id'];
|
||||
_databaseId = context.req.bodyJson['\$databaseId'];
|
||||
|
||||
for (String _member in _members) {
|
||||
await updateConversation(context, _member, _messages);
|
||||
}
|
||||
}
|
||||
} on AppwriteException catch (e) {
|
||||
context.error('error message (AppWrite)- ${e.message}');
|
||||
} on Exception catch (e) {
|
||||
context.error('error message (General)- ${e.toString()}');
|
||||
}
|
||||
return context.res.empty();
|
||||
}
|
||||
|
||||
//
|
||||
dynamic updateConversation(var context, var _member, var _messages) async {
|
||||
//
|
||||
Map _message = json.decode(_messages[_messages.length - 1]);
|
||||
if (_message.isNotEmpty) {
|
||||
List<dynamic> _chatIdMap = [];
|
||||
List<dynamic> _detailMap = [];
|
||||
|
||||
var _conversationDetail = await _database.getDocument(
|
||||
databaseId: _databaseId,
|
||||
collectionId: _conversationDbId,
|
||||
documentId: _member,
|
||||
);
|
||||
|
||||
_detailMap = _conversationDetail.data['details'];
|
||||
_chatIdMap = _conversationDetail.data['chatId'];
|
||||
|
||||
var _index = _chatIdMap.indexOf(_documentId);
|
||||
Map _detail = json.decode(_detailMap[_index]);
|
||||
|
||||
_detail['unseenCount'] += 1;
|
||||
_detail['lastMessage'] = _message['message'];
|
||||
_detail['timeStamp'] = _message['timeStamp'];
|
||||
|
||||
_detailMap[_index] = json.encode(_detail);
|
||||
_conversationDetail.data['details'] = _detailMap;
|
||||
|
||||
Map<String, dynamic> _conversationMap = {
|
||||
"chatId": _chatIdMap,
|
||||
"details": _detailMap
|
||||
};
|
||||
|
||||
await _database.updateDocument(
|
||||
databaseId: _databaseId,
|
||||
collectionId: _conversationDbId,
|
||||
documentId: _member,
|
||||
data: _conversationMap);
|
||||
}
|
||||
return '';
|
||||
return context.res.text('TEST');
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@ name: starter_template
|
||||
version: 1.0.0
|
||||
|
||||
environment:
|
||||
sdk: ^2.17.0
|
||||
sdk: ^3.3.0
|
||||
|
||||
dependencies:
|
||||
dart_appwrite: 8.0.0
|
||||
dart_appwrite: ^8.0.1
|
||||
|
||||
dev_dependencies:
|
||||
lints: ^2.0.0
|
||||
|
||||
Reference in New Issue
Block a user