'use strict'; import React from 'react'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { FormattedMessage } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import Icon from 'soapbox/components/icon'; import { makeGetRemoteInstance } from 'soapbox/selectors'; const hasRestrictions = remoteInstance => { return remoteInstance .get('federation') .deleteAll(['accept', 'reject_deletes', 'report_removal']) .reduce((acc, value) => acc || value, false); }; const getRemoteInstance = makeGetRemoteInstance(); const mapStateToProps = (state, { host }) => { return { instance: state.get('instance'), remoteInstance: getRemoteInstance(state, host), }; }; export default @connect(mapStateToProps, null, null, { forwardRef: true }) class InstanceInfoPanel extends ImmutablePureComponent { static propTypes = { intl: PropTypes.object.isRequired, host: PropTypes.string.isRequired, instance: ImmutablePropTypes.map, remoteInstance: ImmutablePropTypes.map, }; renderRestrictions = () => { const { remoteInstance } = this.props; const items = []; const { avatar_removal, banner_removal, federated_timeline_removal, followers_only, media_nsfw, media_removal, } = remoteInstance.get('federation').toJS(); const fullMediaRemoval = media_removal && avatar_removal && banner_removal; const partialMediaRemoval = media_removal || avatar_removal || banner_removal; if (followers_only) { items.push((