|
@@ -1,4 +1,5 @@
|
|
|
import MAMPlaceholderMessage from '@converse/headless/plugins/mam/placeholder.js';
|
|
|
+import log from '@converse/headless/log.js';
|
|
|
import { _converse, api } from '@converse/headless/core';
|
|
|
import { fetchArchivedMessages } from '@converse/headless/plugins/mam/utils';
|
|
|
import { html } from 'lit-html';
|
|
@@ -13,6 +14,9 @@ export function getPlaceholderTemplate (message, tpl) {
|
|
|
}
|
|
|
|
|
|
export async function fetchMessagesOnScrollUp (view) {
|
|
|
+ if (view.model.ui.get('chat-content-spinner-top')) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (view.model.messages.length) {
|
|
|
const is_groupchat = view.model.get('type') === _converse.CHATROOMS_TYPE;
|
|
|
const oldest_message = view.model.getOldestMessage();
|
|
@@ -20,10 +24,16 @@ export async function fetchMessagesOnScrollUp (view) {
|
|
|
const by_jid = is_groupchat ? view.model.get('jid') : _converse.bare_jid;
|
|
|
const stanza_id = oldest_message && oldest_message.get(`stanza_id ${by_jid}`);
|
|
|
view.model.ui.set('chat-content-spinner-top', true);
|
|
|
- if (stanza_id) {
|
|
|
- await fetchArchivedMessages(view.model, { 'before': stanza_id });
|
|
|
- } else {
|
|
|
- await fetchArchivedMessages(view.model, { 'end': oldest_message.get('time') });
|
|
|
+ try {
|
|
|
+ if (stanza_id) {
|
|
|
+ await fetchArchivedMessages(view.model, { 'before': stanza_id });
|
|
|
+ } else {
|
|
|
+ await fetchArchivedMessages(view.model, { 'end': oldest_message.get('time') });
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ log.error(e);
|
|
|
+ view.model.ui.set('chat-content-spinner-top', false);
|
|
|
+ return;
|
|
|
}
|
|
|
if (api.settings.get('allow_url_history_change')) {
|
|
|
_converse.router.history.navigate(`#${oldest_message.get('msgid')}`);
|