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:
@ -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,
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user