diff --git a/app/soapbox/features/ui/components/hotkeys_modal.js b/app/soapbox/features/ui/components/hotkeys_modal.js
deleted file mode 100644
index 08dd21199..000000000
--- a/app/soapbox/features/ui/components/hotkeys_modal.js
+++ /dev/null
@@ -1,161 +0,0 @@
-import PropTypes from 'prop-types';
-import React from 'react';
-import ImmutablePureComponent from 'react-immutable-pure-component';
-import { injectIntl, FormattedMessage } from 'react-intl';
-
-import { Modal } from 'soapbox/components/ui';
-
-export default @injectIntl
-class HotkeysModal extends ImmutablePureComponent {
-
- static propTypes = {
- intl: PropTypes.object.isRequired,
- onClose: PropTypes.func.isRequired,
- };
-
- render() {
- const { onClose } = this.props;
-
- return (
- }
- onClose={onClose}
- >
-
-
-
-
- |
-
-
-
-
- | r |
- |
-
-
- | m |
- |
-
-
- | p |
- |
-
-
- | f |
- |
-
-
- | e |
- |
-
-
- | b |
- |
-
-
- | enter, o |
- |
-
-
- | a |
- |
-
-
-
-
-
-
- |
-
-
-
-
- | x |
- |
-
-
- | h |
- |
-
-
- | up, k |
- |
-
-
- | down, j |
- |
-
-
- | n |
- |
-
-
- | alt + n |
- |
-
-
- | backspace |
- |
-
-
- | s |
- |
-
-
- | esc |
- |
-
-
-
-
-
-
- |
-
-
-
-
- | g + h |
- |
-
-
- | g + n |
- |
-
-
- | g + f |
- |
-
-
- | g + p |
- |
-
-
- | g + u |
- |
-
-
- | g + b |
- |
-
-
- | g + m |
- |
-
-
- | g + r |
- |
-
-
- | ? |
- |
-
-
-
-
-
- );
- }
-
-}
diff --git a/app/soapbox/features/ui/components/hotkeys_modal.tsx b/app/soapbox/features/ui/components/hotkeys_modal.tsx
new file mode 100644
index 000000000..50845ea59
--- /dev/null
+++ b/app/soapbox/features/ui/components/hotkeys_modal.tsx
@@ -0,0 +1,159 @@
+import React from 'react';
+import { FormattedMessage } from 'react-intl';
+
+import { Modal } from 'soapbox/components/ui';
+import { useAppSelector } from 'soapbox/hooks';
+import { getFeatures } from 'soapbox/utils/features';
+
+interface IHotkeysModal {
+ onClose: () => void,
+}
+
+const HotkeysModal: React.FC = ({ onClose }) => {
+ const features = useAppSelector((state) => getFeatures(state.instance));
+
+ return (
+ }
+ onClose={onClose}
+ >
+
+
+
+
+ |
+
+
+
+
+ | r |
+ |
+
+
+ | m |
+ |
+
+
+ | p |
+ |
+
+
+ | f |
+ |
+
+ {features.emojiReacts && (
+
+ | e |
+ |
+
+ )}
+
+ | b |
+ |
+
+
+ | enter, o |
+ |
+
+
+ | a |
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ | x |
+ |
+
+
+ | h |
+ |
+
+
+ | up, k |
+ |
+
+
+ | down, j |
+ |
+
+
+ | n |
+ |
+
+
+ | alt + n |
+ |
+
+
+ | backspace |
+ |
+
+
+ | s |
+ |
+
+
+ | esc |
+ |
+
+
+
+
+
+
+ |
+
+
+
+
+ | g + h |
+ |
+
+
+ | g + n |
+ |
+
+
+ | g + f |
+ |
+
+
+ | g + p |
+ |
+
+
+ | g + u |
+ |
+
+
+ | g + b |
+ |
+
+
+ | g + m |
+ |
+
+
+ | g + r |
+ |
+
+
+ | ? |
+ |
+
+
+
+
+
+ );
+};
+
+export default HotkeysModal;