meses-messaging
Version:
Meses messaging SDK in JavaScript
159 lines (130 loc) • 5.34 kB
JavaScript
;
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;