From 8447f87456e70a3a021420b437f001479e19320a Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Tue, 7 Dec 2021 16:10:02 +0000 Subject: [PATCH 1/8] create basic security settings page with new route --- src/ROUTES.js | 1 + .../AppNavigator/ModalStackNavigators.js | 4 +++ src/libs/Navigation/linkingConfig.js | 4 +++ .../settings/Security/SecuritySettingsPage.js | 25 +++++++++++++++++++ 4 files changed, 34 insertions(+) create mode 100644 src/pages/settings/Security/SecuritySettingsPage.js diff --git a/src/ROUTES.js b/src/ROUTES.js index f3b856a469de..6d920ed270f9 100644 --- a/src/ROUTES.js +++ b/src/ROUTES.js @@ -24,6 +24,7 @@ export default { SETTINGS_PROFILE: 'settings/profile', SETTINGS_PREFERENCES: 'settings/preferences', SETTINGS_PASSWORD: 'settings/password', + SETTINGS_SECURITY: 'settings/security', SETTINGS_ABOUT: 'settings/about', SETTINGS_APP_DOWNLOAD_LINKS: 'settings/about/app-download-links', SETTINGS_PAYMENTS: 'settings/payments', diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.js b/src/libs/Navigation/AppNavigator/ModalStackNavigators.js index 4b998a632ee4..fea46b6fd659 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.js +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.js @@ -162,6 +162,10 @@ const SettingsModalStackNavigator = createModalStackNavigator([ Component: SettingsPasswordPage, name: 'Settings_Password', }, + { + Component: SettingsSecurityPage, + name: 'Settings_Security', + }, { Component: SettingsAboutPage, name: 'Settings_About', diff --git a/src/libs/Navigation/linkingConfig.js b/src/libs/Navigation/linkingConfig.js index 4e89c80ec813..d408ae5ca57b 100644 --- a/src/libs/Navigation/linkingConfig.js +++ b/src/libs/Navigation/linkingConfig.js @@ -44,6 +44,10 @@ export default { path: ROUTES.SETTINGS_PASSWORD, exact: true, }, + Settings_Security: { + path: ROUTES.SETTINGS_SECURITY, + exact: true, + }, Settings_Payments: { path: ROUTES.SETTINGS_PAYMENTS, exact: true, diff --git a/src/pages/settings/Security/SecuritySettingsPage.js b/src/pages/settings/Security/SecuritySettingsPage.js new file mode 100644 index 000000000000..b699f5f44ccd --- /dev/null +++ b/src/pages/settings/Security/SecuritySettingsPage.js @@ -0,0 +1,25 @@ +import _ from 'underscore'; +import React from 'react'; +import HeaderWithCloseButton from '../../components/HeaderWithCloseButton'; +import Navigation from '../../libs/Navigation/Navigation'; +import ROUTES from '../../ROUTES'; +import ExpensifyText from '../../components/ExpensifyText'; +import ScreenWrapper from '../../components/ScreenWrapper'; +import withLocalize from '../../components/withLocalize'; + +const SecuritySettingsPage = (props) => ( + + Navigation.navigate(ROUTES.SETTINGS)} + onCloseButtonPress={() => Navigation.dismissModal(true)} + /> + + +); + +SecuritySettingsPage.propTypes = propTypes; +SecuritySettingsPage.displayName = 'SecuritySettingsPage'; + +export default withLocalize(SecuritySettingsPage); From 4a954645f96b0fa226cf7495fdcc5f8347d84ded Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Tue, 7 Dec 2021 16:37:16 +0000 Subject: [PATCH 2/8] implement simple security settings list --- src/languages/en.js | 3 + .../AppNavigator/ModalStackNavigators.js | 1 + .../settings/Security/SecuritySettingsPage.js | 78 ++++++++++++++----- 3 files changed, 62 insertions(+), 20 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index 85f944a7380d..9eb7e1b27097 100755 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -271,6 +271,9 @@ export default { label: 'Desktop', }, }, + settingsSecurityPage: { + security: 'Security', + }, signOut: 'Sign out', versionLetter: 'v', changePassword: 'Change password', diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.js b/src/libs/Navigation/AppNavigator/ModalStackNavigators.js index fea46b6fd659..79ee7250f4c4 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.js +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.js @@ -16,6 +16,7 @@ import SettingsPreferencesPage from '../../../pages/settings/PreferencesPage'; import SettingsAboutPage from '../../../pages/settings/AboutPage'; import SettingsAppDownloadLinks from '../../../pages/settings/AppDownloadLinks'; import SettingsPasswordPage from '../../../pages/settings/PasswordPage'; +import SettingsSecurityPage from '../../../pages/settings/Security/SecuritySettingsPage'; import SettingsPaymentsPage from '../../../pages/settings/Payments/PaymentsPage'; import SettingsAddPayPalMePage from '../../../pages/settings/Payments/AddPayPalMePage'; import SettingsAddDebitCardPage from '../../../pages/settings/Payments/AddDebitCardPage'; diff --git a/src/pages/settings/Security/SecuritySettingsPage.js b/src/pages/settings/Security/SecuritySettingsPage.js index b699f5f44ccd..8d9a23f3cee3 100644 --- a/src/pages/settings/Security/SecuritySettingsPage.js +++ b/src/pages/settings/Security/SecuritySettingsPage.js @@ -1,25 +1,63 @@ import _ from 'underscore'; import React from 'react'; -import HeaderWithCloseButton from '../../components/HeaderWithCloseButton'; -import Navigation from '../../libs/Navigation/Navigation'; -import ROUTES from '../../ROUTES'; -import ExpensifyText from '../../components/ExpensifyText'; -import ScreenWrapper from '../../components/ScreenWrapper'; -import withLocalize from '../../components/withLocalize'; +import {View, ScrollView} from 'react-native'; +import HeaderWithCloseButton from '../../../components/HeaderWithCloseButton'; +import Navigation from '../../../libs/Navigation/Navigation'; +import ROUTES from '../../../ROUTES'; +import styles from '../../../styles/styles'; +import * as Expensicons from '../../../components/Icon/Expensicons'; +import ScreenWrapper from '../../../components/ScreenWrapper'; +import withLocalize, {withLocalizePropTypes} from '../../../components/withLocalize'; +import MenuItem from '../../../components/MenuItem'; -const SecuritySettingsPage = (props) => ( - - Navigation.navigate(ROUTES.SETTINGS)} - onCloseButtonPress={() => Navigation.dismissModal(true)} - /> - - -); +const propTypes = { + ...withLocalizePropTypes, +}; -SecuritySettingsPage.propTypes = propTypes; -SecuritySettingsPage.displayName = 'SecuritySettingsPage'; +const AboutPage = (props) => { + const menuItems = [ + { + translationKey: 'initialSettingsPage.aboutPage.appDownloadLinks', + icon: Expensicons.Link, + action: () => { + Navigation.navigate(ROUTES.SETTINGS_APP_DOWNLOAD_LINKS); + }, + }, + ]; -export default withLocalize(SecuritySettingsPage); + return ( + + Navigation.navigate(ROUTES.SETTINGS)} + onCloseButtonPress={() => Navigation.dismissModal(true)} + /> + + + {_.map(menuItems, item => ( + item.action()} + shouldShowRightIcon + /> + ))} + + + + ); +}; + +AboutPage.propTypes = propTypes; +AboutPage.displayName = 'SettingSecurityPage'; + +export default withLocalize(AboutPage); From a3792b78e4733f7d2b1354f920aad3f887263b97 Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Tue, 7 Dec 2021 17:04:08 +0000 Subject: [PATCH 3/8] move ChangePassword page to the settings/security route --- src/ROUTES.js | 2 +- src/languages/en.js | 2 +- src/pages/settings/InitialSettingsPage.js | 2 +- src/pages/settings/PasswordPage.js | 2 +- src/pages/settings/Security/SecuritySettingsPage.js | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ROUTES.js b/src/ROUTES.js index 6d920ed270f9..b91c0206b5b8 100644 --- a/src/ROUTES.js +++ b/src/ROUTES.js @@ -23,8 +23,8 @@ export default { SETTINGS: 'settings', SETTINGS_PROFILE: 'settings/profile', SETTINGS_PREFERENCES: 'settings/preferences', - SETTINGS_PASSWORD: 'settings/password', SETTINGS_SECURITY: 'settings/security', + SETTINGS_PASSWORD: 'settings/security/password', SETTINGS_ABOUT: 'settings/about', SETTINGS_APP_DOWNLOAD_LINKS: 'settings/about/app-download-links', SETTINGS_PAYMENTS: 'settings/payments', diff --git a/src/languages/en.js b/src/languages/en.js index 9eb7e1b27097..096703770f58 100755 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -273,10 +273,10 @@ export default { }, settingsSecurityPage: { security: 'Security', + changePassword: 'Change password', }, signOut: 'Sign out', versionLetter: 'v', - changePassword: 'Change password', readTheTermsAndPrivacyPolicy: { phrase1: 'Read the', phrase2: 'terms of service', diff --git a/src/pages/settings/InitialSettingsPage.js b/src/pages/settings/InitialSettingsPage.js index 2f1a859f910a..d74f1e49708b 100755 --- a/src/pages/settings/InitialSettingsPage.js +++ b/src/pages/settings/InitialSettingsPage.js @@ -99,7 +99,7 @@ const defaultMenuItems = [ action: () => { Navigation.navigate(ROUTES.SETTINGS_PREFERENCES); }, }, { - translationKey: 'initialSettingsPage.changePassword', + translationKey: 'initialSettingsPage.settingsSecurityPage.changePassword', icon: Expensicons.Lock, action: () => { Navigation.navigate(ROUTES.SETTINGS_PASSWORD); }, }, diff --git a/src/pages/settings/PasswordPage.js b/src/pages/settings/PasswordPage.js index 71928e4a91f3..8e9c1d161be1 100755 --- a/src/pages/settings/PasswordPage.js +++ b/src/pages/settings/PasswordPage.js @@ -166,7 +166,7 @@ class PasswordPage extends Component { Navigation.navigate(ROUTES.SETTINGS)} + onBackButtonPress={() => Navigation.navigate(ROUTES.SETTINGS_SECURITY)} onCloseButtonPress={() => Navigation.dismissModal(true)} /> diff --git a/src/pages/settings/Security/SecuritySettingsPage.js b/src/pages/settings/Security/SecuritySettingsPage.js index 8d9a23f3cee3..9947771e106d 100644 --- a/src/pages/settings/Security/SecuritySettingsPage.js +++ b/src/pages/settings/Security/SecuritySettingsPage.js @@ -17,10 +17,10 @@ const propTypes = { const AboutPage = (props) => { const menuItems = [ { - translationKey: 'initialSettingsPage.aboutPage.appDownloadLinks', + translationKey: 'initialSettingsPage.settingsSecurityPage.changePassword', icon: Expensicons.Link, action: () => { - Navigation.navigate(ROUTES.SETTINGS_APP_DOWNLOAD_LINKS); + Navigation.navigate(ROUTES.SETTINGS_PASSWORD); }, }, ]; From 65444aa23b7bc98ae717de0d7d5488e82c644d2e Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Tue, 7 Dec 2021 17:05:17 +0000 Subject: [PATCH 4/8] make 'Security Settings' a top level setting --- src/pages/settings/InitialSettingsPage.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/settings/InitialSettingsPage.js b/src/pages/settings/InitialSettingsPage.js index d74f1e49708b..c0003d0b7836 100755 --- a/src/pages/settings/InitialSettingsPage.js +++ b/src/pages/settings/InitialSettingsPage.js @@ -99,9 +99,9 @@ const defaultMenuItems = [ action: () => { Navigation.navigate(ROUTES.SETTINGS_PREFERENCES); }, }, { - translationKey: 'initialSettingsPage.settingsSecurityPage.changePassword', + translationKey: 'initialSettingsPage.settingsSecurityPage.security', icon: Expensicons.Lock, - action: () => { Navigation.navigate(ROUTES.SETTINGS_PASSWORD); }, + action: () => { Navigation.navigate(ROUTES.SETTINGS_SECURITY); }, }, { translationKey: 'common.payments', From 7ab4835d4965bd9ef2f7de7424c7fc9fa7a89eea Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Tue, 7 Dec 2021 17:16:41 +0000 Subject: [PATCH 5/8] refactor strings to remove duplicate, add spanish translation --- src/languages/en.js | 5 +---- src/languages/es.js | 2 +- src/pages/settings/InitialSettingsPage.js | 2 +- src/pages/settings/Security/SecuritySettingsPage.js | 4 ++-- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index 096703770f58..e6d721d65023 100755 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -271,10 +271,7 @@ export default { label: 'Desktop', }, }, - settingsSecurityPage: { - security: 'Security', - changePassword: 'Change password', - }, + security: 'Security', signOut: 'Sign out', versionLetter: 'v', readTheTermsAndPrivacyPolicy: { diff --git a/src/languages/es.js b/src/languages/es.js index db90ccfbec0c..5b38c49f869d 100644 --- a/src/languages/es.js +++ b/src/languages/es.js @@ -271,9 +271,9 @@ export default { label: 'Desktop', }, }, + security: 'Seguridad', signOut: 'Desconectar', versionLetter: 'v', - changePassword: 'Cambiar contraseña', readTheTermsAndPrivacyPolicy: { phrase1: 'Leer los', phrase2: 'términos de servicio', diff --git a/src/pages/settings/InitialSettingsPage.js b/src/pages/settings/InitialSettingsPage.js index c0003d0b7836..1463ad6e136a 100755 --- a/src/pages/settings/InitialSettingsPage.js +++ b/src/pages/settings/InitialSettingsPage.js @@ -99,7 +99,7 @@ const defaultMenuItems = [ action: () => { Navigation.navigate(ROUTES.SETTINGS_PREFERENCES); }, }, { - translationKey: 'initialSettingsPage.settingsSecurityPage.security', + translationKey: 'initialSettingsPage.security', icon: Expensicons.Lock, action: () => { Navigation.navigate(ROUTES.SETTINGS_SECURITY); }, }, diff --git a/src/pages/settings/Security/SecuritySettingsPage.js b/src/pages/settings/Security/SecuritySettingsPage.js index 9947771e106d..6a7363a495be 100644 --- a/src/pages/settings/Security/SecuritySettingsPage.js +++ b/src/pages/settings/Security/SecuritySettingsPage.js @@ -17,7 +17,7 @@ const propTypes = { const AboutPage = (props) => { const menuItems = [ { - translationKey: 'initialSettingsPage.settingsSecurityPage.changePassword', + translationKey: 'passwordPage.changePassword', icon: Expensicons.Link, action: () => { Navigation.navigate(ROUTES.SETTINGS_PASSWORD); @@ -28,7 +28,7 @@ const AboutPage = (props) => { return ( Navigation.navigate(ROUTES.SETTINGS)} onCloseButtonPress={() => Navigation.dismissModal(true)} From 49e586508521086d44fd598c1b2b70892b28998b Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Wed, 8 Dec 2021 16:01:29 +0000 Subject: [PATCH 6/8] replace 'Change Password; link icon with lock icon --- src/pages/settings/Security/SecuritySettingsPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/settings/Security/SecuritySettingsPage.js b/src/pages/settings/Security/SecuritySettingsPage.js index 6a7363a495be..cc75df5db2d3 100644 --- a/src/pages/settings/Security/SecuritySettingsPage.js +++ b/src/pages/settings/Security/SecuritySettingsPage.js @@ -18,7 +18,7 @@ const AboutPage = (props) => { const menuItems = [ { translationKey: 'passwordPage.changePassword', - icon: Expensicons.Link, + icon: Expensicons.Lock, action: () => { Navigation.navigate(ROUTES.SETTINGS_PASSWORD); }, From 2d2b48e2af211d5b3bc0f7f4c0c997054db37931 Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Wed, 8 Dec 2021 16:02:48 +0000 Subject: [PATCH 7/8] remove trailing space --- src/pages/settings/Security/SecuritySettingsPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/settings/Security/SecuritySettingsPage.js b/src/pages/settings/Security/SecuritySettingsPage.js index cc75df5db2d3..9087e5fff27d 100644 --- a/src/pages/settings/Security/SecuritySettingsPage.js +++ b/src/pages/settings/Security/SecuritySettingsPage.js @@ -17,7 +17,7 @@ const propTypes = { const AboutPage = (props) => { const menuItems = [ { - translationKey: 'passwordPage.changePassword', + translationKey: 'passwordPage.changePassword', icon: Expensicons.Lock, action: () => { Navigation.navigate(ROUTES.SETTINGS_PASSWORD); From 36379b4a71a63f704a413896d5216af6f5701423 Mon Sep 17 00:00:00 2001 From: Jules Rosser Date: Wed, 8 Dec 2021 17:35:45 +0000 Subject: [PATCH 8/8] fix Component name --- src/pages/settings/Security/SecuritySettingsPage.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/settings/Security/SecuritySettingsPage.js b/src/pages/settings/Security/SecuritySettingsPage.js index 9087e5fff27d..212c3a52783c 100644 --- a/src/pages/settings/Security/SecuritySettingsPage.js +++ b/src/pages/settings/Security/SecuritySettingsPage.js @@ -14,7 +14,7 @@ const propTypes = { ...withLocalizePropTypes, }; -const AboutPage = (props) => { +const SecuritySettingsPage = (props) => { const menuItems = [ { translationKey: 'passwordPage.changePassword', @@ -57,7 +57,7 @@ const AboutPage = (props) => { ); }; -AboutPage.propTypes = propTypes; -AboutPage.displayName = 'SettingSecurityPage'; +SecuritySettingsPage.propTypes = propTypes; +SecuritySettingsPage.displayName = 'SettingSecurityPage'; -export default withLocalize(AboutPage); +export default withLocalize(SecuritySettingsPage);