diff --git a/src/pages/KeyboardShortcutsPage.js b/src/pages/KeyboardShortcutsPage.tsx
similarity index 76%
rename from src/pages/KeyboardShortcutsPage.js
rename to src/pages/KeyboardShortcutsPage.tsx
index 809d2ce6dc07..9b70defbf8af 100644
--- a/src/pages/KeyboardShortcutsPage.js
+++ b/src/pages/KeyboardShortcutsPage.tsx
@@ -1,6 +1,5 @@
import React from 'react';
import {ScrollView, View} from 'react-native';
-import _ from 'underscore';
import HeaderWithBackButton from '@components/HeaderWithBackButton';
import MenuItem from '@components/MenuItem';
import ScreenWrapper from '@components/ScreenWrapper';
@@ -10,11 +9,15 @@ import useThemeStyles from '@hooks/useThemeStyles';
import KeyboardShortcut from '@libs/KeyboardShortcut';
import CONST from '@src/CONST';
+type Shortcut = {
+ displayName: string;
+ descriptionKey: 'search' | 'newChat' | 'openShortcutDialog' | 'escape' | 'copy';
+};
+
function KeyboardShortcutsPage() {
const styles = useThemeStyles();
const {translate} = useLocalize();
- const shortcuts = _.chain(CONST.KEYBOARD_SHORTCUTS)
- .filter((shortcut) => !_.isEmpty(shortcut.descriptionKey))
+ const shortcuts = Object.values(CONST.KEYBOARD_SHORTCUTS)
.map((shortcut) => {
const platformAdjustedModifiers = KeyboardShortcut.getPlatformEquivalentForKeys(shortcut.modifiers);
return {
@@ -22,16 +25,12 @@ function KeyboardShortcutsPage() {
descriptionKey: shortcut.descriptionKey,
};
})
- .value();
-
+ .filter((shortcut): shortcut is Shortcut => !!shortcut.descriptionKey);
/**
* Render the information of a single shortcut
- * @param {Object} shortcut
- * @param {String} shortcut.displayName
- * @param {String} shortcut.descriptionKey
- * @returns {React.Component}
+ * @param shortcut - The shortcut to render
*/
- const renderShortcut = (shortcut) => (
+ const renderShortcut = (shortcut: Shortcut) => (
- {translate('keyboardShortcutsPage.subtitle')}
- {_.map(shortcuts, renderShortcut)}
+ {translate('keyboardShortcutsPage.subtitle')}
+ {shortcuts.map(renderShortcut)}