From 3d19def3e711121eda104c37bf05dd4f30f23ab6 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Thu, 11 Aug 2022 14:25:26 +0200 Subject: [PATCH] Wait for emojis to be initialized before sending a message --- src/headless/plugins/chat/model.js | 1 + src/headless/plugins/emoji/utils.js | 3 +-- src/headless/plugins/muc/muc.js | 1 + src/plugins/muc-views/tests/component.js | 8 ++++++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/headless/plugins/chat/model.js b/src/headless/plugins/chat/model.js index 7e2e9f215..3360ddd6c 100644 --- a/src/headless/plugins/chat/model.js +++ b/src/headless/plugins/chat/model.js @@ -845,6 +845,7 @@ const ChatBox = ModelWithContact.extend({ }, async getOutgoingMessageAttributes (attrs) { + await api.emojis.initialize(); const is_spoiler = !!this.get('composing_spoiler'); const origin_id = u.getUniqueId(); const text = attrs?.body; diff --git a/src/headless/plugins/emoji/utils.js b/src/headless/plugins/emoji/utils.js index dbbff30cd..25284cc04 100644 --- a/src/headless/plugins/emoji/utils.js +++ b/src/headless/plugins/emoji/utils.js @@ -94,7 +94,7 @@ export function getShortnameReferences (text) { if (!converse.emojis.initialized) { throw new Error( 'getShortnameReferences called before emojis are initialized. '+ - 'To avoid this problem, first await the converse.emojis.initilaized_promise.' + 'To avoid this problem, first await the converse.emojis.initialized_promise' ); } const references = [...text.matchAll(converse.emojis.shortnames_regex)].filter(ref => ref[0].length > 0); @@ -207,4 +207,3 @@ Object.assign(u, { isOnlyEmojis, shortnamesToUnicode, }); - diff --git a/src/headless/plugins/muc/muc.js b/src/headless/plugins/muc/muc.js index 4caaf65c4..1f3ead597 100644 --- a/src/headless/plugins/muc/muc.js +++ b/src/headless/plugins/muc/muc.js @@ -981,6 +981,7 @@ const ChatRoomMixin = { }, async getOutgoingMessageAttributes (attrs) { + await api.emojis.initialize(); const is_spoiler = this.get('composing_spoiler'); let text = '', references; if (attrs?.body) { diff --git a/src/plugins/muc-views/tests/component.js b/src/plugins/muc-views/tests/component.js index e3aea378d..f8e179062 100644 --- a/src/plugins/muc-views/tests/component.js +++ b/src/plugins/muc-views/tests/component.js @@ -42,7 +42,8 @@ describe("The component", function () { const muc_jid = 'lounge@montague.lit'; const nick = 'romeo'; - const muc_creation_promise = await api.rooms.open(muc_jid, {nick, 'hidden': true}, false); + + const muc_creation_promise = api.rooms.open(muc_jid, {nick, 'hidden': true}, false); await mock.getRoomFeatures(_converse, muc_jid, []); await mock.receiveOwnMUCPresence(_converse, muc_jid, nick); await muc_creation_promise; @@ -59,6 +60,7 @@ describe("The component", function () { span_el.classList.add('conversejs'); span_el.classList.add('converse-embedded'); + const muc_el = document.createElement('converse-muc'); muc_el.classList.add('chatbox'); muc_el.classList.add('chatroom'); @@ -73,8 +75,10 @@ describe("The component", function () { const message = await u.waitUntil(() => muc_el.querySelector('converse-chat-message')); expect(message.model.get('body')).toBe('hello from the lounge!'); + _converse.connection.sent_stanzas = []; + const muc2_jid = 'bar@montague.lit'; - const muc2_creation_promise = await api.rooms.open(muc2_jid, {nick, 'hidden': true}, false); + const muc2_creation_promise = api.rooms.open(muc2_jid, {nick, 'hidden': true}, false); await mock.getRoomFeatures(_converse, muc2_jid, []); await mock.receiveOwnMUCPresence(_converse, muc2_jid, nick); await muc2_creation_promise;