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