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

cn.leancloud.LCFriendshipRequest Maven / Gradle / Ivy

package cn.leancloud;

import cn.leancloud.annotation.LCClassName;
import cn.leancloud.utils.ErrorUtils;
import io.reactivex.Observable;

import java.util.Map;

@LCClassName("_FriendshipRequest")
public class LCFriendshipRequest extends LCObject {
  public static final String CLASS_NAME = "_FriendshipRequest";
  public static final String ATTR_FRIEND = "friend";
  public static final String ATTR_USER = "user";
  public static final String ATTR_STATUS = "status";

  public static final String INTERNAL_STATUS_ACCEPTED = "accepted";
  public static final String INTERNAL_STATUS_DECLINED = "declined";
  public static final int STATUS_PENDING = 0x01;
  public static final int STATUS_ACCEPTED = 0x02;
  public static final int STATUS_DECLINED = 0x04;
  public static final int STATUS_ANY = STATUS_PENDING | STATUS_ACCEPTED | STATUS_DECLINED;

  enum RequestStatus {
    Pending, Accepted, Declined
  }

  public LCFriendshipRequest() {
    super(CLASS_NAME);
  }

  public LCFriendshipRequest(LCFriendshipRequest other) {
    super(other);
  }

  public void setFriend(LCUser user) {
    put(ATTR_FRIEND, user);
  }

  public LCUser getFriend() {
    return getLCObject(ATTR_FRIEND);
  }

  public LCUser getSourceUser() {
    return getLCObject(ATTR_USER);
  }

  public void setSourceUser(LCUser user) {
    put(ATTR_USER, user);
  }

  /**
   * accept friend request by current user.
   *
   * @param attributes additional attributes for this friend.
   * @return observable instance
   *
   * notice: attributes is necessary as parameter bcz they are not properties of FriendshipRequest.
   */
  public Observable accept(Map attributes) {
    LCUser currentUser = LCUser.currentUser();
    if (null == currentUser) {
      logger.d("current user is null.");
      return Observable.error(ErrorUtils.propagateException(LCException.SESSION_MISSING,
              "No valid session token, make sure signUp or login has been called."));
    }
    return currentUser.acceptFriendshipRequest(this, attributes);
  }

  /**
   * decline friend request by current user.
   *
   * @return observable instance
   */
  public Observable decline() {
    LCUser currentUser = LCUser.currentUser();
    if (null == currentUser) {
      logger.d("current user is null.");
      return Observable.error(ErrorUtils.propagateException(LCException.SESSION_MISSING,
              "No valid session token, make sure signUp or login has been called."));
    }
    return currentUser.declineFriendshipRequest(this);
  }

  @Override
  public Observable saveInBackground(final LCSaveOption option) {
    return Observable.error(ErrorUtils.propagateException(LCException.OPERATION_FORBIDDEN,
            "save operation isn't allowed in AVFriendshipRequest class."));
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy