mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Get older messages
This commit is contained in:
@ -29,21 +29,16 @@ class ConversationsHelper {
|
||||
///
|
||||
/// Return the ID of the newly created conversation or -1 in case of failure
|
||||
Future<int> createConversation(ConversationSettings settings) async {
|
||||
final response =
|
||||
await APIRequest(uri: "conversations/create", needLogin: true, args: {
|
||||
"name": settings.hasName ? settings.name : "false",
|
||||
"follow": settings.following ? "true" : "false",
|
||||
"users": settings.members.join(",")
|
||||
}).exec();
|
||||
|
||||
final response = await APIRequest(
|
||||
uri: "conversations/create",
|
||||
needLogin: true,
|
||||
args: {
|
||||
"name" : settings.hasName ? settings.name : "false",
|
||||
"follow" : settings.following ? "true" : "false",
|
||||
"users": settings.members.join(",")
|
||||
}
|
||||
).exec();
|
||||
|
||||
if(response.code != 200) return -1;
|
||||
if (response.code != 200) return -1;
|
||||
|
||||
return response.getObject()["conversationID"];
|
||||
|
||||
}
|
||||
|
||||
/// Download the list of conversations from the server
|
||||
@ -156,6 +151,28 @@ class ConversationsHelper {
|
||||
);
|
||||
}
|
||||
|
||||
/// Parse a list of messages given by the server
|
||||
Future<ConversationMessagesList> _parseConversationMessageFromServer(
|
||||
int conversationID, APIResponse response) async {
|
||||
if (response.code != 200) return null;
|
||||
|
||||
// Parse the response of the server
|
||||
ConversationMessagesList list = ConversationMessagesList();
|
||||
response.getArray().forEach((f) {
|
||||
list.add(
|
||||
_apiToConversationMessage(
|
||||
conversationID: conversationID,
|
||||
map: f,
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
// Save messages in the cache
|
||||
_conversationMessagesDatabaseHelper.insertOrUpdateAll(list);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/// Refresh the list of messages of a conversation
|
||||
///
|
||||
/// Set [lastMessageID] to 0 to specify that we do not have any message of the
|
||||
@ -172,24 +189,26 @@ class ConversationsHelper {
|
||||
"last_message_id": lastMessageID.toString()
|
||||
}).exec();
|
||||
|
||||
if (response.code != 200) return null;
|
||||
return await _parseConversationMessageFromServer(conversationID, response);
|
||||
}
|
||||
|
||||
// Parse the response of the server
|
||||
ConversationMessagesList list = ConversationMessagesList();
|
||||
response.getArray().forEach((f) {
|
||||
list.add(ConversationMessage(
|
||||
id: f["ID"],
|
||||
conversationID: conversationID,
|
||||
userID: f["ID_user"],
|
||||
timeInsert: f["time_insert"],
|
||||
message: f["message"],
|
||||
imageURL: f["image_path"]));
|
||||
});
|
||||
/// Get older messages for a given conversation from an online source
|
||||
Future<ConversationMessagesList> getOlderMessages({
|
||||
@required int conversationID,
|
||||
@required int oldestMessagesID,
|
||||
int limit = 15,
|
||||
}) async {
|
||||
// Perform the request online
|
||||
final response = await APIRequest(
|
||||
uri: "conversations/get_older_messages",
|
||||
needLogin: true,
|
||||
args: {
|
||||
"conversationID": conversationID.toString(),
|
||||
"oldest_message_id": oldestMessagesID.toString(),
|
||||
"limit": limit.toString()
|
||||
}).exec();
|
||||
|
||||
// Save messages in the cache
|
||||
_conversationMessagesDatabaseHelper.insertOrUpdateAll(list);
|
||||
|
||||
return list;
|
||||
return await _parseConversationMessageFromServer(conversationID, response);
|
||||
}
|
||||
|
||||
/// Get new messages for a given conversation
|
||||
@ -237,4 +256,19 @@ class ConversationsHelper {
|
||||
|
||||
return SendMessageResult.SUCCESS;
|
||||
}
|
||||
|
||||
/// Turn an API response into a ConversationMessage object
|
||||
ConversationMessage _apiToConversationMessage({
|
||||
@required int conversationID,
|
||||
@required Map<String, dynamic> map,
|
||||
}) {
|
||||
return ConversationMessage(
|
||||
id: map["ID"],
|
||||
conversationID: conversationID,
|
||||
userID: map["ID_user"],
|
||||
timeInsert: map["time_insert"],
|
||||
message: map["message"],
|
||||
imageURL: map["image_path"],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user