meses-messaging
Version:
Meses messaging SDK in JavaScript
44 lines (38 loc) • 1.21 kB
JavaScript
class PreviousMessageListQuery {
constructor(service, conversationName, next) {
this._service = service
this._conversationName = conversationName
this._next = next
this._reachEnd = false
}
/**
* Load some message items ordered by messageId (timestamp)
*
* @param {Number} items - number of items to load
* @return {Promise} array of messages if fulfilled.
*/
load(items) {
if (this._reachEnd)
return new Promise(function(resolve, reject) { resolve([]) })
const service = this._service
const conversationName = this._conversationName
const next = this._next
return new Promise(function(resolve, reject) {
service.getMessages(conversationName, next, items)
.then(result => {
if (result.nextMessageId == null)
this._reachEnd = true
this._next = result.nextMessageId
resolve(result.messages)
})
.catch(err => reject(err))
}.bind(this))
}
/**
* Predicate for checking whether the query can load more message
*
* @return {Boolean} TRUE if query can load more message
*/
hasMore() { return !this._reachEnd }
}
export default PreviousMessageListQuery