Added unauthorized modal on detail status action buttons

fixes: #52
added isRequired propType on onOpenUnauthorizedModal on normal status
This commit is contained in:
mgabdev 2019-07-22 15:39:45 -04:00
parent 606a6c7f12
commit efb3ac7ac3
2 changed files with 27 additions and 5 deletions

View File

@ -49,6 +49,7 @@ class StatusActionBar extends ImmutablePureComponent {
static propTypes = { static propTypes = {
status: ImmutablePropTypes.map.isRequired, status: ImmutablePropTypes.map.isRequired,
onOpenUnauthorizedModal: PropTypes.func.isRequired,
onReply: PropTypes.func, onReply: PropTypes.func,
onFavourite: PropTypes.func, onFavourite: PropTypes.func,
onReblog: PropTypes.func, onReblog: PropTypes.func,

View File

@ -1,4 +1,6 @@
import React from 'react'; import React from 'react';
import { connect } from 'react-redux';
import { openModal } from '../../../actions/modal';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import IconButton from '../../../components/icon_button'; import IconButton from '../../../components/icon_button';
import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePropTypes from 'react-immutable-proptypes';
@ -31,7 +33,12 @@ const messages = defineMessages({
copy: { id: 'status.copy', defaultMessage: 'Copy link to status' }, copy: { id: 'status.copy', defaultMessage: 'Copy link to status' },
}); });
export default @injectIntl const mapDispatchToProps = (dispatch) => ({
onOpenUnauthorizedModal() {
dispatch(openModal('UNAUTHORIZED'));
},
});
class ActionBar extends React.PureComponent { class ActionBar extends React.PureComponent {
static contextTypes = { static contextTypes = {
@ -53,18 +60,31 @@ class ActionBar extends React.PureComponent {
onPin: PropTypes.func, onPin: PropTypes.func,
onEmbed: PropTypes.func, onEmbed: PropTypes.func,
intl: PropTypes.object.isRequired, intl: PropTypes.object.isRequired,
onOpenUnauthorizedModal: PropTypes.func.isRequired,
}; };
handleReplyClick = () => { handleReplyClick = () => {
this.props.onReply(this.props.status); if (me) {
this.props.onReply(this.props.status);
} else {
this.props.onOpenUnauthorizedModal();
}
} }
handleReblogClick = (e) => { handleReblogClick = (e) => {
this.props.onReblog(this.props.status, e); if (me) {
this.props.onReblog(this.props.status, e);
} else {
this.props.onOpenUnauthorizedModal();
}
} }
handleFavouriteClick = () => { handleFavouriteClick = () => {
this.props.onFavourite(this.props.status); if (me) {
this.props.onFavourite(this.props.status);
} else {
this.props.onOpenUnauthorizedModal();
}
} }
handleDeleteClick = () => { handleDeleteClick = () => {
@ -205,5 +225,6 @@ class ActionBar extends React.PureComponent {
</div> </div>
); );
} }
} }
export default injectIntl(connect(null, mapDispatchToProps)(ActionBar));