import PropTypes from "prop-types"; import { defineMessages, injectIntl, FormattedMessage } from "react-intl"; import classNames from "classnames"; import ImmutablePropTypes from "react-immutable-proptypes"; import ImmutablePureComponent from "react-immutable-pure-component"; import { connect } from "react-redux"; import { changeBoostPrivacy } from "flavours/glitch/actions/boosts"; import AttachmentList from "flavours/glitch/components/attachment_list"; import { Avatar } from "flavours/glitch/components/avatar"; import Button from "flavours/glitch/components/button"; import { DisplayName } from "flavours/glitch/components/display_name"; import { Icon } from "flavours/glitch/components/icon"; import { RelativeTimestamp } from "flavours/glitch/components/relative_timestamp"; import StatusContent from "flavours/glitch/components/status_content"; import VisibilityIcon from "flavours/glitch/components/status_visibility_icon"; import PrivacyDropdown from "flavours/glitch/features/compose/components/privacy_dropdown"; const messages = defineMessages({ cancel_reblog: { id: "status.cancel_reblog_private", defaultMessage: "Unboost" }, reblog: { id: "status.reblog", defaultMessage: "Boost" }, }); const mapStateToProps = state => { return { privacy: state.getIn(["boosts", "new", "privacy"]), }; }; const mapDispatchToProps = dispatch => { return { onChangeBoostPrivacy(value) { dispatch(changeBoostPrivacy(value)); }, }; }; class BoostModal extends ImmutablePureComponent { static contextTypes = { router: PropTypes.object, }; static propTypes = { status: ImmutablePropTypes.map.isRequired, onReblog: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, missingMediaDescription: PropTypes.bool, intl: PropTypes.object.isRequired, }; componentDidMount() { this.button.focus(); } handleReblog = () => { this.props.onReblog(this.props.status, this.props.privacy); this.props.onClose(); }; handleAccountClick = (e) => { if (e.button === 0) { e.preventDefault(); this.props.onClose(); this.context.router.history.push(`/@${this.props.status.getIn(["account", "acct"])}`); } }; _findContainer = () => { return document.getElementsByClassName("modal-root__container")[0]; }; setRef = (c) => { this.button = c; }; render () { const { status, missingMediaDescription, privacy, intl } = this.props; const buttonText = status.get("reblogged") ? messages.cancel_reblog : messages.reblog; return (
); } } export default connect(mapStateToProps, mapDispatchToProps)(injectIntl(BoostModal));