mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +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