import PropTypes from "prop-types"; import { PureComponent } from "react"; import { FormattedMessage, defineMessages, injectIntl } from "react-intl"; import { Link, withRouter } from "react-router-dom"; import { connect } from "react-redux"; import { openModal } from "mastodon/actions/modal"; import { fetchServer } from "mastodon/actions/server"; import { Avatar } from "mastodon/components/avatar"; import { Icon } from "mastodon/components/icon"; import { WordmarkLogo, SymbolLogo } from "mastodon/components/logo"; import { registrationsOpen, me, sso_redirect } from "mastodon/initial_state"; const Account = connect(state => ({ account: state.getIn(["accounts", me]), }))(({ account }) => ( )); const messages = defineMessages({ search: { id: "navigation_bar.search", defaultMessage: "Search" }, }); const mapStateToProps = (state) => ({ signupUrl: state.getIn(["server", "server", "registrations", "url"], null) || "/auth/sign_up", }); const mapDispatchToProps = (dispatch) => ({ openClosedRegistrationsModal() { dispatch(openModal({ modalType: "CLOSED_REGISTRATIONS" })); }, dispatchServer() { dispatch(fetchServer()); }, }); class Header extends PureComponent { static contextTypes = { identity: PropTypes.object, }; static propTypes = { openClosedRegistrationsModal: PropTypes.func, location: PropTypes.object, signupUrl: PropTypes.string.isRequired, dispatchServer: PropTypes.func, intl: PropTypes.object.isRequired, }; componentDidMount () { const { dispatchServer } = this.props; dispatchServer(); } render () { const { signedIn } = this.context.identity; const { location, openClosedRegistrationsModal, signupUrl, intl } = this.props; let content; if (signedIn) { content = ( <> {location.pathname !== "/search" && } {location.pathname !== "/publish" && } ); } else { if (sso_redirect) { content = ( ); } else { let signupButton; if (registrationsOpen) { signupButton = ( ); } else { signupButton = ( ); } content = ( <> {signupButton} ); } } return (
{content}
); } } export default injectIntl(withRouter(connect(mapStateToProps, mapDispatchToProps)(Header)));