From efb3ac7ac3290545248867ab9da072aa05db6578 Mon Sep 17 00:00:00 2001 From: mgabdev <> Date: Mon, 22 Jul 2019 15:39:45 -0400 Subject: [PATCH] Added unauthorized modal on detail status action buttons fixes: #52 added isRequired propType on onOpenUnauthorizedModal on normal status --- .../gabsocial/components/status_action_bar.js | 1 + .../features/status/components/action_bar.js | 31 ++++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/javascript/gabsocial/components/status_action_bar.js b/app/javascript/gabsocial/components/status_action_bar.js index e27a9bcd..f7ca275f 100644 --- a/app/javascript/gabsocial/components/status_action_bar.js +++ b/app/javascript/gabsocial/components/status_action_bar.js @@ -49,6 +49,7 @@ class StatusActionBar extends ImmutablePureComponent { static propTypes = { status: ImmutablePropTypes.map.isRequired, + onOpenUnauthorizedModal: PropTypes.func.isRequired, onReply: PropTypes.func, onFavourite: PropTypes.func, onReblog: PropTypes.func, diff --git a/app/javascript/gabsocial/features/status/components/action_bar.js b/app/javascript/gabsocial/features/status/components/action_bar.js index b7967e69..5f047892 100644 --- a/app/javascript/gabsocial/features/status/components/action_bar.js +++ b/app/javascript/gabsocial/features/status/components/action_bar.js @@ -1,4 +1,6 @@ import React from 'react'; +import { connect } from 'react-redux'; +import { openModal } from '../../../actions/modal'; import PropTypes from 'prop-types'; import IconButton from '../../../components/icon_button'; import ImmutablePropTypes from 'react-immutable-proptypes'; @@ -31,7 +33,12 @@ const messages = defineMessages({ copy: { id: 'status.copy', defaultMessage: 'Copy link to status' }, }); -export default @injectIntl +const mapDispatchToProps = (dispatch) => ({ + onOpenUnauthorizedModal() { + dispatch(openModal('UNAUTHORIZED')); + }, +}); + class ActionBar extends React.PureComponent { static contextTypes = { @@ -53,18 +60,31 @@ class ActionBar extends React.PureComponent { onPin: PropTypes.func, onEmbed: PropTypes.func, intl: PropTypes.object.isRequired, + onOpenUnauthorizedModal: PropTypes.func.isRequired, }; handleReplyClick = () => { - this.props.onReply(this.props.status); + if (me) { + this.props.onReply(this.props.status); + } else { + this.props.onOpenUnauthorizedModal(); + } } handleReblogClick = (e) => { - this.props.onReblog(this.props.status, e); + if (me) { + this.props.onReblog(this.props.status, e); + } else { + this.props.onOpenUnauthorizedModal(); + } } handleFavouriteClick = () => { - this.props.onFavourite(this.props.status); + if (me) { + this.props.onFavourite(this.props.status); + } else { + this.props.onOpenUnauthorizedModal(); + } } handleDeleteClick = () => { @@ -205,5 +225,6 @@ class ActionBar extends React.PureComponent { ); } - } + +export default injectIntl(connect(null, mapDispatchToProps)(ActionBar));