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;