All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.leancloud.im.v2.AVIMConversationQueryConditions Maven / Gradle / Ivy

package cn.leancloud.im.v2;

import cn.leancloud.query.QueryConditions;
import cn.leancloud.utils.StringUtil;

import java.util.List;
import java.util.Map;

final class AVIMConversationQueryConditions extends QueryConditions {
  private static final int Flag_Compact = 0x01;
  private static final int Flag_WithLastMessage = 0x02;
  private boolean isWithLastMessageRefreshed = false;
  private boolean isCompact = false;

  private List tempConvIds = null;

  /**
   * 是否携带最后一条消息
   *
   * @return
   */
  public boolean isWithLastMessagesRefreshed() {
    return isWithLastMessageRefreshed;
  }

  /**
   * 设置是否携带最后一条消息
   *
   * @param isWithLastMessageRefreshed
   */
  public void setWithLastMessagesRefreshed(boolean isWithLastMessageRefreshed) {
    this.isWithLastMessageRefreshed = isWithLastMessageRefreshed;
  }

  public void setCompact(boolean isCompact) {
    this.isCompact = isCompact;
  }

  public void setTempConversationIds(List ids) {
    this.tempConvIds = ids;
  }

  @Override
  public Map assembleParameters() {
    Map parameters = super.assembleParameters();
    if (null != this.tempConvIds && !this.tempConvIds.isEmpty()) {
      parameters.put(Conversation.QUERY_PARAM_TEMPCONV, StringUtil.join(",", this.tempConvIds));
    }
    int flag = 0;
    if (isWithLastMessageRefreshed) {
      flag += Flag_WithLastMessage;
    }
    if (isCompact) {
      flag += Flag_Compact;
    }
    return assembleParameters(parameters, flag);
  }

  public static Map assembleParameters(Map param, int flag) {
    if (null == param) {
      return null;
    }
    if ((flag & Flag_Compact) == Flag_Compact) {
      // 不返回成员列表
      param.put(Conversation.QUERY_PARAM_COMPACT, Boolean.toString(true));
    } else {
      param.remove(Conversation.QUERY_PARAM_COMPACT);
    }
    if ((flag & Flag_WithLastMessage) == Flag_WithLastMessage) {
      // 返回对话最近一条消息
      param.put(Conversation.QUERY_PARAM_LAST_MESSAGE, Boolean.toString(true));
    } else {
      param.remove(Conversation.QUERY_PARAM_LAST_MESSAGE);
    }
    return param;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy