diff --git a/app/gabsocial/components/status_action_bar.js b/app/gabsocial/components/status_action_bar.js
index 4957bcdb0..04c78eba3 100644
--- a/app/gabsocial/components/status_action_bar.js
+++ b/app/gabsocial/components/status_action_bar.js
@@ -106,12 +106,27 @@ class StatusActionBar extends ImmutablePureComponent {
});
}
+ isMobile = () => window.matchMedia('only screen and (max-width: 895px)').matches;
+
handleLikeButtonHover = e => {
- this.setState({ emojiSelectorVisible: true });
+ if (!this.isMobile()) this.setState({ emojiSelectorVisible: true });
}
handleLikeButtonLeave = e => {
- this.setState({ emojiSelectorVisible: false });
+ if (!this.isMobile()) this.setState({ emojiSelectorVisible: false });
+ }
+
+ handleLikeButtonClick = e => {
+ const meEmojiReact = getReactForStatus(this.props.status) || '👍';
+ if (this.isMobile()) {
+ if (this.state.emojiSelectorVisible) {
+ this.handleReactClick(meEmojiReact)();
+ } else {
+ this.setState({ emojiSelectorVisible: true });
+ }
+ } else {
+ this.handleReactClick(meEmojiReact)();
+ }
}
handleReactClick = emoji => {
@@ -277,6 +292,17 @@ class StatusActionBar extends ImmutablePureComponent {
return menu;
}
+ setRef = c => {
+ this.node = c;
+ }
+
+ componentDidMount() {
+ document.addEventListener('click', e => {
+ if (this.node && !this.node.contains(e.target))
+ this.setState({ emojiSelectorVisible: false });
+ });
+ }
+
render() {
const { status, intl } = this.props;
const { emojiSelectorVisible } = this.state;
@@ -330,6 +356,8 @@ class StatusActionBar extends ImmutablePureComponent {
className='status__action-bar__counter status__action-bar__counter--favourite'
onMouseEnter={this.handleLikeButtonHover}
onMouseLeave={this.handleLikeButtonLeave}
+ onClick={this.handleLikeButtonClick}
+ ref={this.setRef}
>
{emojiReactCount !== 0 && {emojiReactCount}}
diff --git a/app/gabsocial/features/status/components/action_bar.js b/app/gabsocial/features/status/components/action_bar.js
index e2e25ad15..cb7c83711 100644
--- a/app/gabsocial/features/status/components/action_bar.js
+++ b/app/gabsocial/features/status/components/action_bar.js
@@ -213,9 +213,13 @@ class ActionBar extends React.PureComponent {
}
}
+ setRef = c => {
+ this.node = c;
+ }
+
componentDidMount() {
document.addEventListener('click', e => {
- if (!document.querySelector('.detailed-status__button--favourite').contains(e.target))
+ if (this.node && !this.node.contains(e.target))
this.setState({ emojiSelectorVisible: false });
});
}
@@ -306,6 +310,7 @@ class ActionBar extends React.PureComponent {
onMouseEnter={this.handleLikeButtonHover}
onMouseLeave={this.handleLikeButtonLeave}
onClick={this.handleLikeButtonClick}
+ ref={this.setRef}
>