import { defineMessages, injectIntl, FormattedMessage } from "react-intl"; import { connect } from "react-redux"; import { followAccount, unfollowAccount, blockAccount, unblockAccount, muteAccount, unmuteAccount, } from "flavours/glitch/actions/accounts"; import { openModal } from "flavours/glitch/actions/modal"; import { initMuteModal } from "flavours/glitch/actions/mutes"; import Account from "flavours/glitch/components/account"; import { unfollowModal } from "flavours/glitch/initial_state"; import { makeGetAccount } from "flavours/glitch/selectors"; const messages = defineMessages({ unfollowConfirm: { id: "confirmations.unfollow.confirm", defaultMessage: "Unfollow" }, }); const makeMapStateToProps = () => { const getAccount = makeGetAccount(); const mapStateToProps = (state, props) => ({ account: getAccount(state, props.id), }); return mapStateToProps; }; const mapDispatchToProps = (dispatch, { intl }) => ({ onFollow (account) { if (account.getIn(["relationship", "following"]) || account.getIn(["relationship", "requested"])) { if (unfollowModal) { dispatch(openModal({ modalType: "CONFIRM", modalProps: { message: @{account.get("acct")} }} />, confirm: intl.formatMessage(messages.unfollowConfirm), onConfirm: () => dispatch(unfollowAccount(account.get("id"))), }, })); } else { dispatch(unfollowAccount(account.get("id"))); } } else { dispatch(followAccount(account.get("id"))); } }, onBlock (account) { if (account.getIn(["relationship", "blocking"])) { dispatch(unblockAccount(account.get("id"))); } else { dispatch(blockAccount(account.get("id"))); } }, onMute (account) { if (account.getIn(["relationship", "muting"])) { dispatch(unmuteAccount(account.get("id"))); } else { dispatch(initMuteModal(account)); } }, onMuteNotifications (account, notifications) { dispatch(muteAccount(account.get("id"), notifications)); }, }); export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Account));