package org.goodev.discourse.api.data;
public class Post {
private static final int LIKE = 2;
private static final int FIVE = 5;
private static final int OFF_TOPIC = 3;
private static final int INAPPROPRIATE = 4;
private static final int NOTIFY_POSTER = 6;
private static final int NOTIFY_MODERATORS = 7;
private static final int SPAM = 8;
public Long id;
public String name;
public String username;
public String avatar_template;
public long created_at;
/**
* 文章 html 内容
*/
public String cooked;
public long post_number;
public long post_type;
public long updated_at;
public long reply_count;
public long reply_to_post_number;
public long quote_count;
public long avg_time;
public long incoming_link_count;
public long reads;
public float score;
public boolean yours;
public String topic_slug;
public Long topic_id;
public String display_username;
public long version;
public boolean can_edit;
public boolean can_delete;
public boolean can_recover;
public boolean read;
public String raw;
public String user_title;
public boolean moderator;
public boolean staff;
public Long user_id;
public boolean hidden;
public long hidden_reason_id;
public long trust_level;
public long deleted_at;
public boolean user_deleted;
public boolean bookmarked;
public Links[] link_counts;
public PostAction[] actions_summary;
public int getLinksSize() {
if (link_counts == null) {
return 0;
}
return link_counts.length;
}
public boolean isLikeCanAct() {
PostAction like = getLikeAction();
return like.can_act;
}
public boolean isLikeCanUndo() {
PostAction like = getLikeAction();
return like.can_undo;
}
public boolean isLikeActed() {
PostAction like = getLikeAction();
return like.acted;
}
/**
* 更新喜欢状态,
*
* @param liked 是否已经喜欢成功
*/
public void updateLikeAction(boolean liked) {
PostAction like = getLikeAction();
if (liked) {
like.can_undo = true;
like.acted = true;
} else {
like.can_undo = false;
like.acted = false;
like.can_act = true;
}
}
public PostAction getLikeAction() {
PostAction[] actions = actions_summary;
for (PostAction action : actions) {
if (action.id.intValue() == LIKE) {
return action;
}
}
return null;
}
public PostAction getAction(int type) {
PostAction[] actions = actions_summary;
for (PostAction action : actions) {
if (action.id.intValue() == type) {
return action;
}
}
return null;
}
public boolean showFlag() {
PostAction[] actions = actions_summary;
for (PostAction action : actions) {
int type = action.id.intValue();
if (type != LIKE && type != FIVE) {
if (action.can_act) {
return true;
}
}
}
return false;
}
}