diff --git a/app/ui-message/client/messageBox.html b/app/ui-message/client/messageBox.html index a08b102819e7..6b672023a1ea 100644 --- a/app/ui-message/client/messageBox.html +++ b/app/ui-message/client/messageBox.html @@ -27,7 +27,7 @@ {{else}} {{#if subscribed}} {{> messageBoxAudioMessage rid=_id}} - + {{#if actions}} {{> icon block="rc-input__icon-svg" icon="plus"}} @@ -41,9 +41,9 @@ {{/if}} {{/unless}} - {{#each actions}} - - {{> icon block="rc-message-box__action" icon=icon }} + {{#each action in actions}} + + {{> icon block="rc-message-box__action" icon=action.icon }} {{/each}} diff --git a/app/ui-message/client/messageBox.js b/app/ui-message/client/messageBox.js index 738960ab2bc8..f4610733df61 100644 --- a/app/ui-message/client/messageBox.js +++ b/app/ui-message/client/messageBox.js @@ -381,7 +381,7 @@ Template.messageBox.events({ input.focus(); }); }, - 'click .rc-message-box__action-menu'(event) { + 'click .js-action-menu'(event, instance) { const groups = messageBox.actions.get(); const config = { popoverClass: 'message-box', @@ -409,6 +409,7 @@ Template.messageBox.events({ currentTarget: event.currentTarget.firstElementChild.firstElementChild, data: { rid: this._id, + messageBox: instance.firstNode, }, activeElement: event.currentTarget, }; @@ -416,12 +417,17 @@ Template.messageBox.events({ popover.open(config); }, 'click .js-message-actions .js-message-action'(event, instance) { - this.action.apply(this, [{ - rid: Template.parentData()._id, - messageBox: instance.find('.rc-message-box'), - element: event.currentTarget, - event, - }]); + const { id } = event.currentTarget.dataset; + const actions = messageBox.actions.getById(id); + actions + .filter(({ action }) => !!action) + .forEach(({ action }) => { + action.call(null, { + rid: this._id, + messageBox: instance.firstNode, + event, + }); + }); }, 'click .js-format'(e, t) { applyFormatting.apply(this, [e, t]); diff --git a/app/ui-utils/client/lib/popover.js b/app/ui-utils/client/lib/popover.js index 1bd698c7b459..871d0924f4ef 100644 --- a/app/ui-utils/client/lib/popover.js +++ b/app/ui-utils/client/lib/popover.js @@ -160,13 +160,16 @@ Template.popover.events({ }, 'click [data-type="messagebox-action"]'(event, t) { const { id } = event.currentTarget.dataset; - const action = messageBox.actions.getById(id); - if ((action[0] != null ? action[0].action : undefined) != null) { - action[0].action({ rid: t.data.data.rid, ...t.data.data, messageBox: document.querySelector('.rc-message-box'), element: event.currentTarget, event }); - if (id !== 'audio-message') { - popover.close(); - } - } + const actions = messageBox.actions.getById(id); + actions + .filter(({ action }) => !!action) + .forEach(({ action }) => { + action.call(null, { + ...t.data.data, + event, + }); + }); + popover.close(); }, 'click [data-type="message-action"]'(e, t) { const button = MessageAction.getButtonById(e.currentTarget.dataset.id);