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;