1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 00:05:16 +00:00

Get conversation message

This commit is contained in:
2019-04-25 08:56:16 +02:00
parent 1ec197202c
commit e2202a4794
8 changed files with 245 additions and 14 deletions

View File

@ -1,9 +1,11 @@
import 'package:comunic/helpers/database/conversations_database_helper.dart';
import 'package:comunic/helpers/users_helper.dart';
import 'package:comunic/lists/conversation_messages_list.dart';
import 'package:comunic/lists/conversations_list.dart';
import 'package:comunic/lists/users_list.dart';
import 'package:comunic/models/api_request.dart';
import 'package:comunic/models/conversation.dart';
import 'package:comunic/models/conversation_message.dart';
import 'package:comunic/utils/account_utils.dart';
/// Conversation helper
@ -67,7 +69,7 @@ class ConversationsHelper {
/// cached version of the conversation will be used, else it will always get
/// the information from the server
Future<Conversation> getSingle(int id, {bool force = false}) async {
if(force || ! await _conversationsDatabaseHelper.has(id))
if (force || !await _conversationsDatabaseHelper.has(id))
return await _downloadSingle(id);
else
return _conversationsDatabaseHelper.get(id);
@ -112,7 +114,7 @@ class ConversationsHelper {
}
/// Turn an API entry into a [Conversation] object
Conversation _apiToConversation(Map<String, dynamic> map){
Conversation _apiToConversation(Map<String, dynamic> map) {
return Conversation(
id: map["ID"],
ownerID: map["ID_owner"],
@ -123,4 +125,35 @@ class ConversationsHelper {
members: map["members"].map<int>((f) => int.parse(f)).toList(),
);
}
/// Refresh the list of messages of a conversation
///
/// Set [lastMessageID] to 0 to specify that we do not have any message of the
/// conversation yet or another value else
Future<ConversationMessagesList> downloadNewMessagesSingle(int conversationID,
{int lastMessageID = 0}) async {
// Execute the request on the server
final response = await APIRequest(
uri: "conversations/refresh_single",
needLogin: true,
args: {
"conversationID": conversationID.toString(),
"last_message_id": lastMessageID.toString()
}).exec();
if (response.code != 200) return null;
// Parse the response of the server
ConversationMessagesList list = ConversationMessagesList();
response.getArray().forEach((f) {
list.add(ConversationMessage(
id: f["ID"],
userID: f["ID_user"],
timeInsert: f["time_insert"],
message: f["message"],
imageURL: f["image_path"]));
});
return list;
}
}