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

cn.leancloud.AVStatus Maven / Gradle / Ivy

package cn.leancloud;

import cn.leancloud.annotation.AVClassName;
import cn.leancloud.core.PaasClient;
import cn.leancloud.ops.Utils;
import cn.leancloud.types.AVNull;
import cn.leancloud.utils.ErrorUtils;
import cn.leancloud.utils.StringUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONType;
import io.reactivex.Observable;

import java.util.HashMap;
import java.util.Map;

/**
 * status sample:
 *
{
 "ACL": {
 "*": {
 "read": true,
 "write": false
 }
 },
 "content": [
 {
 "__type": "Pointer",
 "className": "Feed",
 "objectId": "objectid"
 }
 ],
 "inboxType": "draft",
 "type": "postFeedDraft",
 "source": {
 "__type": "Pointer",
 "className": "_User",
 "objectId": "a particular user"
 },
 "contributor": {
 "__type": "Pointer",
 "className": "_User",
 "objectId": "another particular user"
 },
 "objectId": "status object id",
 "createdAt": "2018-04-19T08:43:16.277Z",
 "updatedAt": "2018-04-19T08:43:16.277Z"
}
 *
 */
@AVClassName("_Status")
@JSONType(ignores = {"acl", "updatedAt", "uuid"})
public class AVStatus extends AVObject {
  public final static String CLASS_NAME = "_Status";
  public static final String IMAGE_TAG = "image";
  public static final String MESSAGE_TAG = "message";
  public static final String DATAMAP_TAG = "dataMap";

  public AVStatus() {
    super(CLASS_NAME);
  }

  public enum INBOX_TYPE {
    TIMELINE("default"), PRIVATE("private");
    private String type;

    private INBOX_TYPE(String type) {
      this.type = type;
    }

    @Override
    public String toString() {
      return this.type;
    }
  }

  public void setImageUrl(final String imageUrl) {
    put(IMAGE_TAG, imageUrl);
  }

  public String getImageUrl() {
    return getString(IMAGE_TAG);
  }

  public void setMessage(String msg) {
    put(MESSAGE_TAG, msg);
  }

  public String getMessage() {
    return getString(MESSAGE_TAG);
  }

  @Override
  public Observable deleteInBackground() {
    return deleteStatusInBackground(getObjectId());
  }

  public static Observable deleteStatusInBackground(String statusId) {
    if (!checkUserAuthenticated()) {
      return Observable.error(ErrorUtils.sessionMissingException());
    }
    if (StringUtil.isEmpty(statusId)) {
      return Observable.error(ErrorUtils.invalidObjectIdException());
    }
    return PaasClient.getStorageClient().deleteStatus(statusId);
  }

  public static Observable deleteInboxStatusInBackground(long messageId, String inboxType, AVUser owner) {
    if (null == owner || StringUtil.isEmpty(owner.getObjectId())) {
      return Observable.error(new AVException(AVException.USER_DOESNOT_EXIST, "Owner can't be null"));
    }
    if (StringUtil.isEmpty(inboxType)) {
      return Observable.error(new IllegalArgumentException("messageId can't be null/empty"));
    }
    String ownerString = JSON.toJSONString(Utils.mapFromPointerObject(owner));
    Map params = new HashMap();
    params.put("messageId", String.valueOf(messageId));
    params.put("inboxType", inboxType);
    params.put("owner", ownerString);
    return PaasClient.getStorageClient().deleteInboxStatus(params);
  }

  public static AVStatusQuery statusQuery(AVUser owner) throws AVException {
    AVStatusQuery query = new AVStatusQuery();
//    query.setSelfQuery(true);
    query.whereEqualTo("source", owner);
//    query.setExternalQueryPath(AVStatus.STATUS_ENDPOINT);
    return query;
  }

  private static boolean checkUserAuthenticated() {
    AVUser currentUser = AVUser.getCurrentUser();
    if (null != currentUser && currentUser.isAuthenticated()) {
      return true;
    } else {
      return false;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy