Home Reference Source

src/instant-messages/InstantMessage.js

import {InstantMessageType} from './InstantMessageType';

/**
 * @example <caption>Creating an InstantMessage</caption>
 * let im = session.createInstantMessage(recipient, text);
 * im.send().then(() => {
 *    console.warn("Message received by the server");
 * })
 */
export class InstantMessage {
	/**
	 * @protected
	 */
	constructor(wacProxy, type, sender, receiver, message) {
		/** @private */
		this.wacProxy = wacProxy;
		/** @private */
		this.type = type;
		/** @private */
		this.sender = sender;
		/** @private */
		this.receiver = receiver;
		/** @private */
		this.message = message;
	}

	/**
	 * Get the message's composer
	 * @return {String} composer
	 */
	getSender() {
		return this.sender;
	}

	/**
	 * Get the message' receiver
	 * @return {String} receiver
	 */
	getReceiver() {
		return this.receiver;
	}

	/**
	 * Get the message
	 * @return {String} message
	 */
	getMessage() {
		return this.message;
	}

	/**
	 * Sends the message
	 * @return {Promise}
	 */
	send() {
		if (this.type !== InstantMessageType.outgoing) {
			throw new Error('Outgoing message can not be sent');
		}
		return this.wacProxy.sendIm(this.receiver, this.message);
	}
}