From 1a7a5e80544814451089dd5dee9957eb8f92cc61 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Sat, 18 Jul 2015 21:39:49 +0200 Subject: [PATCH] Add a spinner when loading during infinite scrolling. updates #306 --- converse.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/converse.js b/converse.js index 997f2465f..e5d580381 100644 --- a/converse.js +++ b/converse.js @@ -1281,6 +1281,7 @@ if ($(ev.target).scrollTop() === 0) { oldest = this.model.messages.where({'time': this.model.messages.pluck('time').sort()[0]}); if (oldest) { + this.$el.find('.chat-content').prepend(''); this.fetchArchivedMessages({ 'before': oldest[0].get('archive_id'), 'with': this.model.get('jid'), @@ -1343,7 +1344,12 @@ * so that they are displayed inside it. */ API.archive.query(options, - _.partial(_.map, _, converse.chatboxes.onMessage.bind(converse.chatboxes)), + function (messages) { + this.clearSpinner(); + if (messages.length) { + _.map(messages, converse.chatboxes.onMessage.bind(converse.chatboxes)); + } + }.bind(this), _.partial(converse.log, "Error while trying to fetch archived messages", "error") ); }, @@ -1379,6 +1385,13 @@ return this; }, + clearSpinner: function () { + var $content = this.$el.find('.chat-content'); + if ($content.children(':first').is('span.spinner')) { + $content.children(':first').first().remove(); + } + }, + showMessage: function (msg_dict) { var $content = this.$el.find('.chat-content'), msg_time = moment(msg_dict.time) || moment,