diff --git a/src/plugins/sib-reply-to-message.js b/src/plugins/sib-reply-to-message.js index cc36c79755b5ee1143e316922c617b7ef9f4e540..2b7e8d05f8c4f97a33719092a513770b245386b2 100644 --- a/src/plugins/sib-reply-to-message.js +++ b/src/plugins/sib-reply-to-message.js @@ -1,17 +1,22 @@ /** * Add an action button to reply to a message. + * TODO: Add settings to handle this plugin */ converse.plugins.add('sib-reply-to-message', { initialize() { const _converse = this._converse; const { api, __ } = _converse; - const { utils } = converse.env; + const { utils, _ } = converse.env; + + function removeQuotedMessages(text) { + return text.replace(/^>.*(\n)?/gm, ''); + } api.listen.on('getMessageActionButtons', (el, buttons) => { // Do not add if the message is not from a MUC // Do not add if the message is from the current user - if (el.model.get('type') !== 'groupchat' || el.model.get('from_real_jid') === _converse.bare_jid) { + if (el.model.get('type') !== 'groupchat' || el.model.get('sender') === 'me') { return buttons; } @@ -19,7 +24,16 @@ converse.plugins.add('sib-reply-to-message', { 'i18n_text': __('Reply'), 'handler': ev => { const chat_textarea = utils.ancestor(el, '.chatbox')?.querySelector('.chat-textarea'); - chat_textarea.value = `@${el.model.get('nick')} `; + chat_textarea.value = ''; + + // Add the previous message without quoted messages (to avoid blockquotes into blockquotes) + const message = _.truncate(removeQuotedMessages(el.model.get('message')), { length: 100 }); + if (message.length > 0) { + chat_textarea.value += `${message.replace(/^/gm, '>')}\n`; + } + + // Add mention to the initial user and focus textarea + chat_textarea.value += `@${el.model.get('nick')} `; chat_textarea.focus(); }, 'button_class': 'chat-msg__action-reply',