//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
/**
* Message.java
* vk-android-sdk
*
* Created by Babichev Vitaly on 19.01.14.
* Copyright (c) 2014 VK. All rights reserved.
*/
package com.vk.sdk.api.model;
import android.os.Parcel;
import org.json.JSONException;
import org.json.JSONObject;
/**
* A message object describes a private message
*/
@SuppressWarnings("unused")
public class VKApiMessage extends VKApiModel implements Identifiable, android.os.Parcelable {
/**
* Message ID. (Not returned for forwarded messages), positive number
*/
public int id;
/**
* For an incoming message, the user ID of the author. For an outgoing message, the user ID of the receiver.
*/
public int user_id;
/**
* Date (in Unix time) when the message was sent.
*/
public long date;
/**
* Message status (false — not read, true — read). (Not returned for forwarded messages.)
*/
public boolean read_state;
/**
* Message type (false — received, true — sent). (Not returned for forwarded messages.)
*/
public boolean out;
/**
* Title of message or chat.
*/
public String title;
/**
* Body of the message.
*/
public String body;
/**
* List of media-attachments;
*/
public VKAttachments attachments = new VKAttachments();
/**
* Array of forwarded messages (if any).
*/
public VKList<VKApiMessage> fwd_messages;
/**
* Whether the message contains smiles (false — no, true — yes).
*/
public boolean emoji;
/**
* Whether the message is deleted (false — no, true — yes).
*/
public boolean deleted;
public VKApiMessage(JSONObject from) throws JSONException
{
parse(from);
}
/**
* Fills a Message instance from JSONObject.
*/
public VKApiMessage parse(JSONObject source) throws JSONException {
id = source.optInt("id");
user_id = source.optInt("user_id");
date = source.optLong("date");
read_state = ParseUtils.parseBoolean(source, "read_state");
out = ParseUtils.parseBoolean(source, "out");
title = source.optString("title");
body = source.optString("body");
attachments .fill(source.optJSONArray("attachments"));
fwd_messages = new VKList<VKApiMessage>(source.optJSONArray("fwd_messages"), VKApiMessage.class);
emoji = ParseUtils.parseBoolean(source, "emoji");
deleted = ParseUtils.parseBoolean(source, "deleted");
return this;
}
/**
* Creates a Message instance from Parcel.
*/
public VKApiMessage(Parcel in) {
this.id = in.readInt();
this.user_id = in.readInt();
this.date = in.readLong();
this.read_state = in.readByte() != 0;
this.out = in.readByte() != 0;
this.title = in.readString();
this.body = in.readString();
this.attachments = in.readParcelable(VKAttachments.class.getClassLoader());
this.fwd_messages = in.readParcelable(VKList.class.getClassLoader());
this.emoji = in.readByte() != 0;
this.deleted = in.readByte() != 0;
}
/**
* Creates empty Country instance.
*/
public VKApiMessage() {
}
@Override
public int getId() {
return id;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.id);
dest.writeInt(this.user_id);
dest.writeLong(this.date);
dest.writeByte(read_state ? (byte) 1 : (byte) 0);
dest.writeByte(out ? (byte) 1 : (byte) 0);
dest.writeString(this.title);
dest.writeString(this.body);
dest.writeParcelable(attachments, flags);
dest.writeParcelable(this.fwd_messages, flags);
dest.writeByte(emoji ? (byte) 1 : (byte) 0);
dest.writeByte(deleted ? (byte) 1 : (byte) 0);
}
public static Creator<VKApiMessage> CREATOR = new Creator<VKApiMessage>() {
public VKApiMessage createFromParcel(Parcel source) {
return new VKApiMessage(source);
}
public VKApiMessage[] newArray(int size) {
return new VKApiMessage[size];
}
};
}