Files
masto-fe-archos/app/javascript/mastodon/containers/account_container.jsx
2025-10-12 13:42:02 +02:00

77 lines
2.2 KiB
JavaScript

import { defineMessages, injectIntl, FormattedMessage } from "react-intl";
import { connect } from "react-redux";
import {
followAccount,
unfollowAccount,
blockAccount,
unblockAccount,
muteAccount,
unmuteAccount,
} from "../actions/accounts";
import { openModal } from "../actions/modal";
import { initMuteModal } from "../actions/mutes";
import Account from "../components/account";
import { unfollowModal } from "../initial_state";
import { makeGetAccount } from "../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: <FormattedMessage id='confirmations.unfollow.message' defaultMessage='Are you sure you want to unfollow {name}?' values={{ name: <strong>@{account.get("acct")}</strong> }} />,
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));