diff --git a/native/profile/default-notifications-preferences.react.js b/native/profile/default-notifications-preferences.react.js index 7a65937ec..3fa74a7cb 100644 --- a/native/profile/default-notifications-preferences.react.js +++ b/native/profile/default-notifications-preferences.react.js @@ -1,181 +1,182 @@ // @flow import * as React from 'react'; import { View, Text, ScrollView, Platform, Alert } from 'react-native'; import { setUserSettings, setUserSettingsActionTypes, } from 'lib/actions/user-actions'; import { registerFetchKey } from 'lib/reducers/loading-reducer'; import { type UpdateUserSettingsRequest, type NotificationTypes, userSettingsTypes, } from 'lib/types/account-types'; import { type DispatchActionPromise, useServerCall, useDispatchActionPromise, } from 'lib/utils/action-utils'; import Action from '../components/action-row.react'; import SWMansionIcon from '../components/swmansion-icon.react'; import type { NavigationRoute } from '../navigation/route-names'; import { useStyles } from '../themes/colors'; import type { ProfileNavigationProp } from './profile.react'; const CheckIcon = () => ( ); type ProfileRowProps = { +content: string, +onPress: () => void, +danger?: boolean, + +selected?: boolean, }; function NotificationRow(props: ProfileRowProps): React.Node { - const { content, onPress, danger } = props; + const { content, onPress, danger, selected } = props; return ( - + {selected ? : null} ); } type BaseProps = { +navigation: ProfileNavigationProp<>, +route: NavigationRoute<'DefaultNotifications'>, }; type Props = { ...BaseProps, +styles: typeof unboundStyles, +dispatchActionPromise: DispatchActionPromise, +changeNotificationSettings: ( notificationSettingsRequest: UpdateUserSettingsRequest, ) => Promise, }; class DefaultNotificationsPreferences extends React.PureComponent { async updatedDefaultNotifications(data: NotificationTypes) { const { changeNotificationSettings } = this.props; try { await changeNotificationSettings({ name: userSettingsTypes.DEFAULT_NOTIFICATIONS, data, }); } catch (e) { Alert.alert( 'Unknown error', 'Uhh... try again?', [{ text: 'OK', onPress: () => {} }], { cancelable: false }, ); } } selectNotificationSetting = (data: NotificationTypes) => { const { dispatchActionPromise } = this.props; dispatchActionPromise( setUserSettingsActionTypes, this.updatedDefaultNotifications(data), ); }; selectAllNotifications = () => { this.selectNotificationSetting('all'); }; selectBackgroundNotifications = () => { this.selectNotificationSetting('background'); }; selectNoneNotifications = () => { this.selectNotificationSetting('none'); }; render() { const { styles } = this.props; return ( NOTIFICATIONS ); } } const unboundStyles = { scrollView: { backgroundColor: 'panelBackground', }, scrollViewContentContainer: { paddingTop: 24, }, section: { backgroundColor: 'panelForeground', borderBottomWidth: 1, borderColor: 'panelForegroundBorder', borderTopWidth: 1, marginBottom: 24, marginVertical: 2, }, icon: { lineHeight: Platform.OS === 'ios' ? 18 : 20, }, header: { color: 'panelBackgroundLabel', fontSize: 12, fontWeight: '400', paddingBottom: 3, paddingHorizontal: 24, }, }; registerFetchKey(setUserSettingsActionTypes); const ConnectedDefaultNotificationPreferences: React.ComponentType = React.memo( function ConnectedDefaultNotificationPreferences(props: BaseProps) { const styles = useStyles(unboundStyles); const dispatchActionPromise = useDispatchActionPromise(); const changeNotificationSettings = useServerCall(setUserSettings); return ( ); }, ); export default ConnectedDefaultNotificationPreferences;