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

Can update a conversation message

This commit is contained in:
2019-05-04 10:24:38 +02:00
parent c8b68e71aa
commit 62125d7c3d
5 changed files with 151 additions and 21 deletions

View File

@ -292,6 +292,13 @@ class ConversationsHelper {
lastMessageID: lastMessageID);
}
/// Get a single conversation message from the local database
///
/// Returns the message if found or null in case of failure
Future<ConversationMessage> getSingleMessageFromCache(int messageID) async {
return await _conversationMessagesDatabaseHelper.get(messageID);
}
/// Send a new message to the server
Future<SendMessageResult> sendMessage(NewConversationMessage message) async {
final request = APIRequest(
@ -320,27 +327,34 @@ class ConversationsHelper {
return SendMessageResult.SUCCESS;
}
/// Update a message content
Future<bool> updateMessage(int id, String newContent) async {
final response = await APIRequest(
uri: "conversations/updateMessage",
needLogin: true,
args: {"messageID": id.toString(), "content": newContent}).exec();
if (response.code != 200) return false;
// Update the message content locally
return await _conversationMessagesDatabaseHelper.updateMessageContent(
id: id, newContent: newContent);
}
/// Delete permanently a message specified by its [id]
Future<bool> deleteMessage(int id) async {
// Delete the message online
final response = await APIRequest(
uri: "conversations/deleteMessage",
needLogin: true,
args: {
"messageID": id.toString()
}
).exec();
if(response.code != 200) return false;
uri: "conversations/deleteMessage",
needLogin: true,
args: {"messageID": id.toString()}).exec();
if (response.code != 200) return false;
// Delete the message locally
return await _conversationMessagesDatabaseHelper.delete(id);
}
/// Turn an API response into a ConversationMessage object
ConversationMessage _apiToConversationMessage({
@required int conversationID,

View File

@ -2,6 +2,7 @@ import 'package:comunic/helpers/database/database_contract.dart';
import 'package:comunic/helpers/database/model_database_helper.dart';
import 'package:comunic/lists/conversation_messages_list.dart';
import 'package:comunic/models/conversation_message.dart';
import 'package:meta/meta.dart';
/// Conversation messages database helper
///
@ -34,4 +35,26 @@ class ConversationMessagesDatabaseHelper
finalList.addAll(list);
return finalList;
}
/// Update the content of a message
Future<bool> updateMessageContent({
@required int id,
@required String newContent,
}) async {
assert(id != null);
assert(newContent != null);
final message = await get(id);
if(message == null)
return false;
// Update the conversation message using the map
final map = message.toMap();
map[ConversationsMessagesTableContract.C_MESSAGE] = newContent;
await insertOrUpdate(ConversationMessage.fromMap(map));
return true; // Success
}
}