diff --git a/app/soapbox/pages/remote_instance_page.js b/app/soapbox/pages/remote_instance_page.js deleted file mode 100644 index 187eab26a..000000000 --- a/app/soapbox/pages/remote_instance_page.js +++ /dev/null @@ -1,57 +0,0 @@ -import React from 'react'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { connect } from 'react-redux'; - -import LinkFooter from 'soapbox/features/ui/components/link_footer'; -import BundleContainer from 'soapbox/features/ui/containers/bundle_container'; -import { - PromoPanel, - InstanceInfoPanel, - InstanceModerationPanel, -} from 'soapbox/features/ui/util/async-components'; -import { federationRestrictionsDisclosed } from 'soapbox/utils/state'; - -import { Layout } from '../components/ui'; - -const mapStateToProps = state => { - const me = state.me; - const account = state.accounts.get(me); - - return { - me, - disclosed: federationRestrictionsDisclosed(state), - isAdmin: Boolean(account?.admin), - }; -}; - -export default @connect(mapStateToProps) -class RemoteInstancePage extends ImmutablePureComponent { - - render() { - const { children, params: { instance: host }, disclosed, isAdmin } = this.props; - - return ( - <> - - {children} - - - - - {Component => } - - - {Component => } - - {(disclosed || isAdmin) && ( - - {Component => } - - )} - - - - ); - } - -} diff --git a/app/soapbox/pages/remote_instance_page.tsx b/app/soapbox/pages/remote_instance_page.tsx new file mode 100644 index 000000000..548e0f9de --- /dev/null +++ b/app/soapbox/pages/remote_instance_page.tsx @@ -0,0 +1,50 @@ +import React from 'react'; + +import LinkFooter from 'soapbox/features/ui/components/link_footer'; +import BundleContainer from 'soapbox/features/ui/containers/bundle_container'; +import { + PromoPanel, + InstanceInfoPanel, + InstanceModerationPanel, +} from 'soapbox/features/ui/util/async-components'; +import { useAppSelector, useOwnAccount } from 'soapbox/hooks'; +import { federationRestrictionsDisclosed } from 'soapbox/utils/state'; + +import { Layout } from '../components/ui'; + +interface IRemoteInstancePage { + params: { + instance: string, + }, +} + +/** Page for viewing a remote instance timeline. */ +const RemoteInstancePage: React.FC = ({ children, params: { instance: host } }) => { + const account = useOwnAccount(); + const disclosed = useAppSelector(federationRestrictionsDisclosed); + + return ( + <> + + {children} + + + + + {Component => } + + + {Component => } + + {(disclosed || account?.admin) && ( + + {Component => } + + )} + + + + ); +}; + +export default RemoteInstancePage;