66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
import React from 'react';
|
|
import { ScrollView } from 'react-native';
|
|
import PropTypes from 'prop-types';
|
|
|
|
import I18n from '../../i18n';
|
|
import {
|
|
logEvent, events
|
|
} from '../../utils/log';
|
|
import scrollPersistTaps from '../../utils/scrollPersistTaps';
|
|
import Separator from '../../containers/Separator';
|
|
import SafeAreaView from '../../containers/SafeAreaView';
|
|
import StatusBar from '../../containers/StatusBar';
|
|
import ListItem from '../../containers/ListItem';
|
|
import { DisclosureImage } from '../../containers/DisclosureIndicator';
|
|
import { withTheme } from '../../theme';
|
|
|
|
class UserPreferencesView extends React.Component {
|
|
static navigationOptions = () => ({
|
|
title: I18n.t('Preferences')
|
|
});
|
|
|
|
static propTypes = {
|
|
navigation: PropTypes.object,
|
|
theme: PropTypes.string
|
|
}
|
|
|
|
renderDisclosure = () => {
|
|
const { theme } = this.props;
|
|
return <DisclosureImage theme={theme} />;
|
|
}
|
|
|
|
navigateToScreen = (screen, params) => {
|
|
logEvent(events[`SE_GO_${ screen.replace('View', '').toUpperCase() }`]);
|
|
const { navigation } = this.props;
|
|
navigation.navigate(screen, params);
|
|
}
|
|
|
|
render() {
|
|
const { theme } = this.props;
|
|
|
|
return (
|
|
<SafeAreaView testID='preferences-view' theme={theme}>
|
|
<StatusBar theme={theme} />
|
|
<ScrollView
|
|
{...scrollPersistTaps}
|
|
contentContainerStyle={{ paddingVertical: 36 }}
|
|
showsVerticalScrollIndicator={false}
|
|
testID='preferences-view-list'
|
|
>
|
|
<ListItem
|
|
title={I18n.t('Notifications')}
|
|
onPress={() => this.navigateToScreen('UserNotificationPrefView')}
|
|
showActionIndicator
|
|
testID='preferences-view-notifications'
|
|
right={this.renderDisclosure}
|
|
theme={theme}
|
|
/>
|
|
<Separator theme={theme} />
|
|
</ScrollView>
|
|
</SafeAreaView>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default withTheme(UserPreferencesView);
|