diff --git a/app/soapbox/features/federation_restrictions/components/instance_restrictions.js b/app/soapbox/features/federation_restrictions/components/instance_restrictions.tsx similarity index 80% rename from app/soapbox/features/federation_restrictions/components/instance_restrictions.js rename to app/soapbox/features/federation_restrictions/components/instance_restrictions.tsx index fdb3cd328..ac86039fd 100644 --- a/app/soapbox/features/federation_restrictions/components/instance_restrictions.js +++ b/app/soapbox/features/federation_restrictions/components/instance_restrictions.tsx @@ -1,39 +1,29 @@ 'use strict'; -import PropTypes from 'prop-types'; import React from 'react'; -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; import { FormattedMessage } from 'react-intl'; -import { connect } from 'react-redux'; import Icon from 'soapbox/components/icon'; import { Text } from 'soapbox/components/ui'; +import { useAppSelector } from 'soapbox/hooks'; -const hasRestrictions = remoteInstance => { +import type { Map as ImmutableMap } from 'immutable'; + +const hasRestrictions = (remoteInstance: ImmutableMap): boolean => { return remoteInstance .get('federation') .deleteAll(['accept', 'reject_deletes', 'report_removal']) - .reduce((acc, value) => acc || value, false); + .reduce((acc: boolean, value: boolean) => acc || value, false); }; -const mapStateToProps = state => { - return { - instance: state.get('instance'), - }; -}; - -export default @connect(mapStateToProps) -class InstanceRestrictions extends ImmutablePureComponent { +interface IInstanceRestrictions { + remoteInstance: ImmutableMap, +} - static propTypes = { - intl: PropTypes.object.isRequired, - remoteInstance: ImmutablePropTypes.map.isRequired, - instance: ImmutablePropTypes.map, - }; +const InstanceRestrictions: React.FC = ({ remoteInstance }) => { + const instance = useAppSelector(state => state.instance); - renderRestrictions = () => { - const { remoteInstance } = this.props; + const renderRestrictions = () => { const items = []; const { @@ -105,10 +95,9 @@ class InstanceRestrictions extends ImmutablePureComponent { } return items; - } + }; - renderContent = () => { - const { instance, remoteInstance } = this.props; + const renderContent = () => { if (!instance || !remoteInstance) return null; const host = remoteInstance.get('host'); @@ -136,7 +125,7 @@ class InstanceRestrictions extends ImmutablePureComponent { /> ), - this.renderRestrictions(), + renderRestrictions(), ]; } else { return ( @@ -150,14 +139,13 @@ class InstanceRestrictions extends ImmutablePureComponent { ); } - } + }; - render() { - return ( -
- {this.renderContent()} -
- ); - } + return ( +
+ {renderContent()} +
+ ); +}; -} +export default InstanceRestrictions;