diff --git a/res/css/views/messages/_MessageActionBar.scss b/res/css/views/messages/_MessageActionBar.scss
index 685c2bb018..7ac0e95e81 100644
--- a/res/css/views/messages/_MessageActionBar.scss
+++ b/res/css/views/messages/_MessageActionBar.scss
@@ -67,6 +67,10 @@ limitations under the License.
background-color: $message-action-bar-fg-color;
}
+.mx_MessageActionBar_reactButton::after {
+ mask-image: url('$(res)/img/react.svg');
+}
+
.mx_MessageActionBar_replyButton::after {
mask-image: url('$(res)/img/reply.svg');
}
diff --git a/res/img/react.svg b/res/img/react.svg
new file mode 100644
index 0000000000..dd23c41c2c
--- /dev/null
+++ b/res/img/react.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/components/views/messages/MessageActionBar.js b/src/components/views/messages/MessageActionBar.js
index 80f0ba538c..3fb82febce 100644
--- a/src/components/views/messages/MessageActionBar.js
+++ b/src/components/views/messages/MessageActionBar.js
@@ -131,6 +131,16 @@ export default class MessageActionBar extends React.PureComponent {
return SettingsStore.isFeatureEnabled("feature_message_editing");
}
+ renderReactButton() {
+ if (!this.isReactionsEnabled()) {
+ return null;
+ }
+
+ return ;
+ }
+
renderAgreeDimension() {
if (!this.isReactionsEnabled()) {
return null;
@@ -160,12 +170,14 @@ export default class MessageActionBar extends React.PureComponent {
}
render() {
+ let reactButton;
let agreeDimensionReactionButtons;
let likeDimensionReactionButtons;
let replyButton;
let editButton;
if (isContentActionable(this.props.mxEvent)) {
+ reactButton = this.renderReactButton();
agreeDimensionReactionButtons = this.renderAgreeDimension();
likeDimensionReactionButtons = this.renderLikeDimension();
replyButton =
+ {reactButton}
{agreeDimensionReactionButtons}
{likeDimensionReactionButtons}
{replyButton}
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 3edaaf6241..9564c45172 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -930,6 +930,7 @@
"Error decrypting audio": "Error decrypting audio",
"Agree or Disagree": "Agree or Disagree",
"Like or Dislike": "Like or Dislike",
+ "React": "React",
"Reply": "Reply",
"Edit": "Edit",
"Options": "Options",