614 Use translation library for settings menu
This commit is contained in:
@@ -7,28 +7,28 @@ import {
|
||||
View,
|
||||
} from 'react-native'
|
||||
import PropTypes from 'prop-types'
|
||||
import AppText from '../common/app-text'
|
||||
|
||||
import AppIcon from '../common/app-icon'
|
||||
import CloseIcon from '../common/close-icon'
|
||||
import MenuItem from './menu-item'
|
||||
|
||||
import { Colors, Sizes } from '../../styles'
|
||||
import settingsLabels from '../../i18n/en/settings'
|
||||
import { Colors, Sizes, Typography } from '../../styles'
|
||||
import { HIT_SLOP } from '../../config'
|
||||
|
||||
const { menuItems } = settingsLabels
|
||||
import { useTranslation } from 'react-i18next'
|
||||
|
||||
const settingsMenuItems = [
|
||||
{ name: menuItems.settings, component: 'SettingsMenu' },
|
||||
{ name: menuItems.about, component: 'About' },
|
||||
{ name: menuItems.license, component: 'License' },
|
||||
{ name: menuItems.privacyPolicy, component: 'PrivacyPolicy' },
|
||||
{ labelKey: 'settings', componentName: 'SettingsMenu' },
|
||||
{ labelKey: 'about', componentName: 'About' },
|
||||
{ labelKey: 'license', componentName: 'License' },
|
||||
{ labelKey: 'privacyPolicy', componentName: 'PrivacyPolicy' },
|
||||
]
|
||||
|
||||
const HamburgerMenu = ({ navigate }) => {
|
||||
const [isOpen, setIsOpen] = useState(false)
|
||||
const closeMenu = () => setIsOpen(false)
|
||||
|
||||
const { t } = useTranslation(null, { keyPrefix: 'hamburgerMenu.menuMain' })
|
||||
|
||||
if (!isOpen)
|
||||
return (
|
||||
<TouchableOpacity onPress={() => setIsOpen(true)} hitSlop={HIT_SLOP}>
|
||||
@@ -36,23 +36,25 @@ const HamburgerMenu = ({ navigate }) => {
|
||||
</TouchableOpacity>
|
||||
)
|
||||
|
||||
function onPress(componentName) {
|
||||
closeMenu()
|
||||
navigate(componentName)
|
||||
}
|
||||
|
||||
return (
|
||||
<Modal animationType="fade" onRequestClose={closeMenu} transparent={true}>
|
||||
<TouchableOpacity
|
||||
onPress={closeMenu}
|
||||
style={styles.blackBackground}
|
||||
></TouchableOpacity>
|
||||
<Modal animationType="fade" onRequestClose={closeMenu} transparent>
|
||||
<TouchableOpacity onPress={closeMenu} style={styles.blackBackground} />
|
||||
<View style={styles.menu}>
|
||||
<View style={styles.iconContainer}>
|
||||
<CloseIcon color={'black'} onClose={closeMenu} />
|
||||
</View>
|
||||
{settingsMenuItems.map((item) => (
|
||||
<MenuItem
|
||||
item={item}
|
||||
key={item.name}
|
||||
closeMenu={closeMenu}
|
||||
navigate={navigate}
|
||||
/>
|
||||
{settingsMenuItems.map(({ labelKey, componentName }) => (
|
||||
<TouchableOpacity
|
||||
onPress={() => onPress(componentName)}
|
||||
key={labelKey}
|
||||
>
|
||||
<AppText style={styles.menuItem}>{t(labelKey)}</AppText>
|
||||
</TouchableOpacity>
|
||||
))}
|
||||
</View>
|
||||
</Modal>
|
||||
@@ -84,4 +86,5 @@ const styles = StyleSheet.create({
|
||||
position: 'absolute',
|
||||
width: '60%',
|
||||
},
|
||||
menuItem: Typography.subtitle,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user