diff --git a/app/javascript/flavours/glitch/containers/status_container.js b/app/javascript/flavours/glitch/containers/status_container.js
index 44cd1367c..c0e0e9abf 100644
--- a/app/javascript/flavours/glitch/containers/status_container.js
+++ b/app/javascript/flavours/glitch/containers/status_container.js
@@ -166,11 +166,7 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({
},
onReactionAdd (statusId, name, url) {
- const { signedIn } = this.context.identity;
-
- if (signedIn) {
- dispatch(addReaction(statusId, name, url));
- }
+ dispatch(addReaction(statusId, name, url));
},
onReactionRemove (statusId, name) {
diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.js b/app/javascript/flavours/glitch/features/status/components/action_bar.js
index 07e3e0001..92bafe06f 100644
--- a/app/javascript/flavours/glitch/features/status/components/action_bar.js
+++ b/app/javascript/flavours/glitch/features/status/components/action_bar.js
@@ -237,7 +237,13 @@ class ActionBar extends React.PureComponent {
-
+
+ {
+ signedIn
+ ?
+ : reactButton
+ }
+
{shareButton}
diff --git a/app/javascript/flavours/glitch/features/status/components/detailed_status.js b/app/javascript/flavours/glitch/features/status/components/detailed_status.js
index ad4398f96..89e245906 100644
--- a/app/javascript/flavours/glitch/features/status/components/detailed_status.js
+++ b/app/javascript/flavours/glitch/features/status/components/detailed_status.js
@@ -27,6 +27,7 @@ class DetailedStatus extends ImmutablePureComponent {
static contextTypes = {
router: PropTypes.object,
+ identity: PropTypes.object,
};
static propTypes = {
@@ -330,6 +331,7 @@ class DetailedStatus extends ImmutablePureComponent {
reactions={status.get('reactions')}
addReaction={this.props.onReactionAdd}
removeReaction={this.props.onReactionRemove}
+ canReact={this.context.identity.signedIn}
/>
diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js
index 4526c9a28..95af32353 100644
--- a/app/javascript/flavours/glitch/features/status/index.js
+++ b/app/javascript/flavours/glitch/features/status/index.js
@@ -308,12 +308,6 @@ class Status extends ImmutablePureComponent {
if (signedIn) {
dispatch(addReaction(statusId, name, url));
- } else {
- dispatch(openModal('INTERACTION', {
- type: 'reaction_add',
- accountId: status.getIn(['account', 'id']),
- url: status.get('url'),
- }));
}
}
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js
index 284c5dbd7..367131efe 100644
--- a/app/javascript/mastodon/components/status.js
+++ b/app/javascript/mastodon/components/status.js
@@ -65,6 +65,7 @@ class Status extends ImmutablePureComponent {
static contextTypes = {
router: PropTypes.object,
+ identity: PropTypes.object,
};
static propTypes = {
@@ -547,7 +548,7 @@ class Status extends ImmutablePureComponent {
numVisible={visibleReactions}
addReaction={this.props.onReactionAdd}
removeReaction={this.props.onReactionRemove}
- emojiMap={this.props.emojiMap}
+ canReact={this.context.identity.signedIn}
/>
diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js
index 60c0f322e..c7127c434 100644
--- a/app/javascript/mastodon/components/status_action_bar.js
+++ b/app/javascript/mastodon/components/status_action_bar.js
@@ -132,13 +132,7 @@ class StatusActionBar extends ImmutablePureComponent {
}
handleEmojiPick = data => {
- const { signedIn } = this.context.identity;
-
- if (signedIn) {
- this.props.onReactionAdd(this.props.status.get('id'), data.native.replace(/:/g, ''));
- } else {
- this.props.onInteractionModal('favourite', this.props.status);
- }
+ this.props.onReactionAdd(this.props.status.get('id'), data.native.replace(/:/g, ''), data.imageUrl);
}
handleReblogClick = e => {
diff --git a/app/javascript/mastodon/components/status_reactions.js b/app/javascript/mastodon/components/status_reactions.js
index c16b7e826..ff025e8d2 100644
--- a/app/javascript/mastodon/components/status_reactions.js
+++ b/app/javascript/mastodon/components/status_reactions.js
@@ -17,8 +17,8 @@ export default class StatusReactions extends ImmutablePureComponent {
reactions: ImmutablePropTypes.list.isRequired,
numVisible: PropTypes.number,
addReaction: PropTypes.func.isRequired,
+ canReact: PropTypes.bool.isRequired,
removeReaction: PropTypes.func.isRequired,
- emojiMap: ImmutablePropTypes.map.isRequired,
};
willEnter() {
@@ -57,7 +57,7 @@ export default class StatusReactions extends ImmutablePureComponent {
style={{ transform: `scale(${style.scale})`, position: style.scale < 0.5 ? 'absolute' : 'static' }}
addReaction={this.props.addReaction}
removeReaction={this.props.removeReaction}
- emojiMap={this.props.emojiMap}
+ canReact={this.props.canReact}
/>
))}
@@ -75,7 +75,7 @@ class Reaction extends ImmutablePureComponent {
reaction: ImmutablePropTypes.map.isRequired,
addReaction: PropTypes.func.isRequired,
removeReaction: PropTypes.func.isRequired,
- emojiMap: ImmutablePropTypes.map.isRequired,
+ canReact: PropTypes.bool.isRequired,
style: PropTypes.object,
};
@@ -85,14 +85,11 @@ class Reaction extends ImmutablePureComponent {
handleClick = () => {
const { reaction, statusId, addReaction, removeReaction } = this.props;
- const { signedIn } = this.context.identity;
- if (signedIn) {
- if (reaction.get('me')) {
- removeReaction(statusId, reaction.get('name'));
- } else {
- addReaction(statusId, reaction.get('name'));
- }
+ if (reaction.get('me')) {
+ removeReaction(statusId, reaction.get('name'));
+ } else {
+ addReaction(statusId, reaction.get('name'));
}
}
@@ -109,10 +106,16 @@ class Reaction extends ImmutablePureComponent {
onClick={this.handleClick}
onMouseEnter={this.handleMouseEnter}
onMouseLeave={this.handleMouseLeave}
+ disabled={!this.props.canReact}
style={this.props.style}
>
-
+
@@ -127,12 +130,13 @@ class Emoji extends React.PureComponent {
static propTypes = {
emoji: PropTypes.string.isRequired,
- emojiMap: ImmutablePropTypes.map.isRequired,
hovered: PropTypes.bool.isRequired,
+ url: PropTypes.string,
+ staticUrl: PropTypes.string,
};
render() {
- const { emoji, emojiMap, hovered } = this.props;
+ const { emoji, hovered, url, staticUrl } = this.props;
if (unicodeMapping[emoji]) {
const { filename, shortCode } = unicodeMapping[this.props.emoji];
@@ -147,10 +151,8 @@ class Emoji extends React.PureComponent {
src={`${assetHost}/emoji/${filename}.svg`}
/>
);
- } else if (emojiMap.get(emoji)) {
- const filename = (autoPlayGif || hovered)
- ? emojiMap.getIn([emoji, 'url'])
- : emojiMap.getIn([emoji, 'static_url']);
+ } else {
+ const filename = (autoPlayGif || hovered) ? url : staticUrl;
const shortCode = `:${emoji}:`;
return (
@@ -162,8 +164,6 @@ class Emoji extends React.PureComponent {
src={filename}
/>
);
- } else {
- return null;
}
}
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js
index 21e28b0c4..d1e300e90 100644
--- a/app/javascript/mastodon/features/status/components/action_bar.js
+++ b/app/javascript/mastodon/features/status/components/action_bar.js
@@ -310,7 +310,13 @@ class ActionBar extends React.PureComponent {
-
+
+ {
+ canReact
+ ?
+ : reactButton
+ }
+
{shareButton}
diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js
index f34b66110..acb9fff57 100644
--- a/app/javascript/mastodon/features/status/components/detailed_status.js
+++ b/app/javascript/mastodon/features/status/components/detailed_status.js
@@ -31,6 +31,7 @@ class DetailedStatus extends ImmutablePureComponent {
static contextTypes = {
router: PropTypes.object,
+ identity: PropTypes.object,
};
static propTypes = {
@@ -51,7 +52,6 @@ class DetailedStatus extends ImmutablePureComponent {
onToggleMediaVisibility: PropTypes.func,
onReactionAdd: PropTypes.func.isRequired,
onReactionRemove: PropTypes.func.isRequired,
- emojiMap: ImmutablePropTypes.map.isRequired,
};
state = {
@@ -284,7 +284,7 @@ class DetailedStatus extends ImmutablePureComponent {
reactions={status.get('reactions')}
addReaction={this.props.onReactionAdd}
removeReaction={this.props.onReactionRemove}
- emojiMap={this.props.emojiMap}
+ canReact={this.context.identity.signedIn}
/>
diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js
index d22009d0e..a3a0f0af7 100644
--- a/app/javascript/mastodon/features/status/index.js
+++ b/app/javascript/mastodon/features/status/index.js
@@ -263,12 +263,6 @@ class Status extends ImmutablePureComponent {
if (signedIn) {
dispatch(addReaction(statusId, name, url));
- } else {
- dispatch(openModal('INTERACTION', {
- type: 'reaction_add',
- accountId: status.getIn(['account', 'id']),
- url: status.get('url'),
- }));
}
}