package com.zulip.android.networking.response.events; import com.google.gson.annotations.SerializedName; import com.j256.ormlite.dao.Dao; import com.zulip.android.ZulipApp; import com.zulip.android.models.Message; import com.zulip.android.util.ZLog; import java.sql.SQLException; import java.util.List; /** * This class is used to deserialize the update_message type events {@link EventsBranch.BranchType#UPDATE_MESSAGE}. * <p> * example: {"rendered_content":"<p>(deleted</p>","sender":"example@gmail.com", * "edit_timestamp":1485954038,"orig_content":"(deleted)","message_ids":[142650], * "content":"(deleted","orig_rendered_content":"<p>(deleted)</p>","flags":["read"],"id":31, * "type":"update_message","message_id":142650} */ public class UpdateMessageWrapper extends EventsBranch { @SerializedName("rendered_content") private String formattedContent; @SerializedName("sender") private String senderEmail; @SerializedName("edit_timestamp") private long editedTimeStamp; @SerializedName("orig_content") private String origContent; @SerializedName("message_ids") private List<Integer> messageIds; @SerializedName("content") private String content; @SerializedName("orig_rendered_content") private String origFormattedContent; @SerializedName("flags") private List<?> flags; @SerializedName("message_id") private int messageId; @SerializedName("subject") private String subject; /** * Returns old form of edited message. * * @return {@link Message} message */ public Message getMessage(int messageId) { try { Dao<Message, Integer> messageDao = ZulipApp.get().getDao(Message.class); Message message = messageDao.queryBuilder().where().eq(Message.ID_FIELD, messageId).queryForFirst(); if (message != null) { if (this.formattedContent != null) { message.setFormattedContent(this.formattedContent); message.setHasBeenEdited(true); } if (containsSubject()) { message.setSubject(this.subject); } return message; } } catch (SQLException e) { ZLog.logException(e); } return null; } public List<Integer> getMessageIds() { return this.messageIds; } public boolean containsSubject() { return this.subject != null; } }