UNPKG

meses-messaging

Version:

Meses messaging SDK in JavaScript

159 lines (130 loc) 5.34 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _PreviousMessageListQuery = require('./PreviousMessageListQuery'); var _PreviousMessageListQuery2 = _interopRequireDefault(_PreviousMessageListQuery); var _NewMessageUpdateHandler = require('./NewMessageUpdateHandler'); var _NewMessageUpdateHandler2 = _interopRequireDefault(_NewMessageUpdateHandler); var _Message = require('./Message'); var _Message2 = _interopRequireDefault(_Message); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Conversation = function () { function Conversation(service, conversationName, username, properties) { _classCallCheck(this, Conversation); this._service = service; this._username = username; this.conversationName = conversationName; Object.assign(this, properties); } /** * Mark conversation as read * * @return {Promise} fulfilled if succeeded. */ _createClass(Conversation, [{ key: 'markAsRead', value: function markAsRead() { var service = this._service; var conversationName = this.conversationName; var username = this._username; return new Promise(function (resolve, reject) { service.markConversationRead(conversationName, username).then(function () { return resolve(); }).catch(function (err) { return reject(err); }); }); } /** * Refresh conversation attributes (including properties and subscribers) * * @return {Promise} fulfilled if succeeded. */ }, { key: 'refresh', value: function refresh() { var service = this._service; return new Promise(function (resolve, reject) { var _this = this; service.getConversation(this.conversationName).then(function (properties) { Object.assign(_this, properties);resolve(properties); }).catch(function (err) { return reject(err); }); }.bind(this)); } /** * Create a previous message list query. * * @param {Number} start - query param for first message time * @return {PreviousMessageListQuery} */ }, { key: 'createPreviousMessageListQuery', value: function createPreviousMessageListQuery(start) { start = start ? start : null; var service = this._service; var conversationName = this.conversationName; return new _PreviousMessageListQuery2.default(service, conversationName, start); } /** * Create a conversation update handler. * * @param {String} identifier - unique identifier of update handler * @param {Function(err, result)} callback function for new message updates * @param {Number} timeout - refresh rate (in milliseconds) * @return {NewMessageUpdateHandler} */ }, { key: 'createNewMessageUpdateHandler', value: function createNewMessageUpdateHandler(identifier, callback, timeout) { var service = this._service; var conversationName = this.conversationName; return new _NewMessageUpdateHandler2.default(service, conversationName, identifier, callback, timeout); } /** * Post a new message to conversation. * * @param {String} message * @param {Object} properties * @return {Promise} the newly created message if creation succeeded (fulfilled). */ }, { key: 'sendMessage', value: function sendMessage(message, properties) { var service = this._service; var username = this._username; return new Promise(function (resolve, reject) { service.createMessage(this.conversationName, this._username, message, properties).then(function (result) { return resolve(new _Message2.default(result.messageId, message, username, properties)); }).catch(function (err) { return reject(err); }); }.bind(this)); } /** * Subscribing specified user to conversation. * * @param {String} username * @return {Promise} fulfilled if subscription creation succeeded. */ }, { key: 'inviteUser', value: function inviteUser(username) { var service = this._service; var conversationName = this.conversationName; return new Promise(function (resolve, reject) { service.createSubscription(conversationName, username).then(function () { return resolve(); }).catch(function (err) { return reject(err); }); }); } }]); return Conversation; }(); exports.default = Conversation;