getFileMessages static method

Future<bool> getFileMessages(
  1. TPChannel tpChannel,
  2. TPMessage? lastMessage,
  3. dynamic successCallback(
    1. List<TPMessage>,
    2. bool
    ), {
  4. String translationLanguage = "",
  5. String orderBy = "",
  6. dynamic errorCallback(
    1. int? errorCode,
    2. String? errorMessage
    )?,
})

Implementation

static Future<bool> getFileMessages(
    TPChannel tpChannel,
    TPMessage? lastMessage,
    Function(List<TPMessage>, bool) successCallback,
    {
      String translationLanguage = "",
      String orderBy = "",
      Function(int? errorCode, String? errorMessage)? errorCallback
    }) async
{
  if (!_isInitialized(errorCallback: errorCallback)) { return false; }
  if (!_checkAuthInfo(errorCallback: errorCallback)) { return false; }

  String url = "/channels/${tpChannel.getChannelId()}/messages/files";

  Map<String, String> params = {};
  // Last Message ID
  if (lastMessage != null) {
    String lastMessageId = lastMessage.getMessageId();
    if(lastMessageId.isNotEmpty) {
      params["lastMessageId"] = lastMessageId;
    }
  }
  // TranslationLanguage
  if(translationLanguage.isNotEmpty){
    params["translationTargetLanguage"] = translationLanguage;
  }
  // Order by
  if(orderBy == "latest" || orderBy == "oldest") {
    params["order"] = orderBy;
  }
  // Appends query string
  if(params.isNotEmpty) {
    String queryString = _buildQueryString(params);
    url += queryString;
  }

  try {
    Map<String, dynamic> response = await HttpUtil.get(url);
    List<dynamic> messageArray = response["messages"];
    List<TPMessage> list = List.from([]);
    for (Map<String, dynamic> element in messageArray) {
      list.add(TPMessage(element));
    }
    // Succeeded
    successCallback(list, response["hasNext"]);
    return true;
  } on TPException catch(e) {
    Logger.log("$e");
    if(errorCallback != null) { errorCallback(e.getCode(), e.getMessage()); }
  } catch(e){
    Logger.log("$e");
    if(errorCallback != null) { errorCallback(-1, e.toString()); }
  }
  return false;
}