/**
* @class Message
* @property {string} uuid Message ID
* @property {int} type Type identifier for message. Possible values are: {@link Message#TYPE_TEXT}
* @property {string} content text message content
* @property {string} thumb_300_url image message thumb file url
* @property {string} thumb_100_url image message thumb file url
* @property {string} original_url image message original file url
* @property {string} file_url file message link to file
* @property {int} sender_flag indicates if message was sent by visitor. {@link Message#SENDER_VISITOR}
* @property {string} sender_id message sender ID. Refer to manager or visitor, depends on `sender_flag`
* @property {Date} sent_at message sent at date time.
*/
class Message {
constructor(){
this.uuid = null;
this.type = null;
this.content = null;
this.thumb_300_url = null;
this.thumb_100_url = null;
this.file_url = null;
this.sender_flag = null;
this.sender_id = null;
this.sent_at = null;
}
}
/**
* Message type for text messages.
* @type {number}
*/
Message.TYPE_TEXT = 0;
Message.TYPE_IMG = 4;
Message.TYPE_FILE = 5;
Message.SENDER_VISITOR = 0;
Message.SENDER_MANAGER = 1;
/**
* Static constructor for building text messages
*
* @param text
* @return {Message}
*/
Message.buildText = (text) => {
let message = new Message();
message.type = Message.TYPE_TEXT;
message.content = text;
return message;
};
Message.buildImg = (imgUrl) => {
let message = new Message();
message.type = Message.TYPE_IMG;
message.content = '';
message.thumb_300_url = imgUrl.thumb300Url;
message.thumb_100_url = imgUrl.thumb100Url;
message.original_url = imgUrl.fileUrl;
return message;
};
Message.buildFile = (fileUrl) => {
let message = new Message();
message.type = Message.TYPE_FILE;
message.content = '';
message.file_url = fileUrl.fileUrl
return message;
};
/**
* Static builder from API data object
*/
Message.buildFromInfo = (data) => {
let message = new Message();
message.uuid = data.uuid;
message.type = data.type;
switch(data.type) {
case Message.TYPE_TEXT:
message.type = data.type;
message.content = data.content;
break;
case Message.TYPE_IMG:
message.type = data.type;
message.thumb_100_url = data.thumb_100_url;
message.thumb_300_url = data.thumb_300_url;
message.original_url = data.original_url;
break;
case Message.TYPE_FILE:
message.type = data.type;
message.file_url = data.file_url;
break;
default:
message.type = Message.TYPE_TEXT;
message.content = "(Message has unknown type)";
}
message.sender_flag = data.sender_flag;
message.sender_id = data.sender_id;
message.sent_at = new Date(data.sent_at * 1000);
return message;
}
export default Message;