From bee05503725d063a2d902d5a0c32fbee0bfbd936 Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 7 Jan 2019 23:28:48 +0100 Subject: [PATCH] Move reusable components to separate folder, password view refactoring --- components/settings/about.js | 2 +- .../settings/{ => common}/alert-error.js | 2 +- .../settings/common/confirm-with-password.js | 6 +- .../{password => common}/password-field.js | 0 .../settings/{ => common}/settings-button.js | 4 +- .../settings/{ => common}/settings-segment.js | 4 +- .../settings/data-management/delete-data.js | 4 +- .../settings/data-management/export-dialog.js | 2 +- .../settings/data-management/import-dialog.js | 2 +- components/settings/data-management/index.js | 4 +- components/settings/nfp-settings/index.js | 2 +- .../settings/nfp-settings/temp-slider.js | 2 +- .../password/check-current-password.js | 23 -------- components/settings/password/create.js | 2 +- components/settings/password/delete.js | 2 +- .../settings/password/enter-new-password.js | 4 +- components/settings/password/index.js | 57 ++++++++----------- components/settings/password/update.js | 2 +- components/settings/reminders/index.js | 2 +- i18n/en/labels.js | 2 +- 20 files changed, 49 insertions(+), 79 deletions(-) rename components/settings/{ => common}/alert-error.js (65%) rename components/settings/{password => common}/password-field.js (100%) rename components/settings/{ => common}/settings-button.js (84%) rename components/settings/{ => common}/settings-segment.js (87%) delete mode 100644 components/settings/password/check-current-password.js diff --git a/components/settings/about.js b/components/settings/about.js index 4005afe..9ea0ea1 100644 --- a/components/settings/about.js +++ b/components/settings/about.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import { ScrollView } from 'react-native' import Hyperlink from 'react-native-hyperlink' import AppText from '../app-text' -import SettingsSegment from './settings-segment' +import SettingsSegment from './common/settings-segment' import styles from '../../styles/index' import labels, { links } from '../../i18n/en/settings' import replace from '../helpers/replace-url-with-text' diff --git a/components/settings/alert-error.js b/components/settings/common/alert-error.js similarity index 65% rename from components/settings/alert-error.js rename to components/settings/common/alert-error.js index b4d447d..6d08d91 100644 --- a/components/settings/alert-error.js +++ b/components/settings/common/alert-error.js @@ -1,5 +1,5 @@ import { Alert } from 'react-native' -import { shared as sharedLabels } from '../../i18n/en/labels' +import { shared as sharedLabels } from '../../../i18n/en/labels' export default function alertError(msg) { Alert.alert(sharedLabels.errorTitle, msg) diff --git a/components/settings/common/confirm-with-password.js b/components/settings/common/confirm-with-password.js index fee296a..e7a48ee 100644 --- a/components/settings/common/confirm-with-password.js +++ b/components/settings/common/confirm-with-password.js @@ -4,8 +4,8 @@ import { View, Alert } from 'react-native' import nodejs from 'nodejs-mobile-react-native' import { requestHash, openDb } from '../../../db' -import PasswordField from '../password/password-field' -import SettingsButton from '../settings-button' +import PasswordField from './password-field' +import SettingsButton from '../common/settings-button' import settings from '../../../i18n/en/settings' import { shared } from '../../../i18n/en/labels' @@ -79,7 +79,7 @@ export default class ConfirmWithPassword extends Component { onPress={this.initPasswordCheck} disabled={!password} > - {settings.deleteSegment.title} + {shared.confirmToProceed} ) diff --git a/components/settings/password/password-field.js b/components/settings/common/password-field.js similarity index 100% rename from components/settings/password/password-field.js rename to components/settings/common/password-field.js diff --git a/components/settings/settings-button.js b/components/settings/common/settings-button.js similarity index 84% rename from components/settings/settings-button.js rename to components/settings/common/settings-button.js index bfa8983..97272bb 100644 --- a/components/settings/settings-button.js +++ b/components/settings/common/settings-button.js @@ -2,8 +2,8 @@ import React from 'react' import PropTypes from 'prop-types' import { TouchableOpacity } from 'react-native' -import AppText from '../app-text' -import styles from '../../styles' +import AppText from '../../app-text' +import styles from '../../../styles' const SettingsButton = ({ children, ...props }) => { return ( diff --git a/components/settings/settings-segment.js b/components/settings/common/settings-segment.js similarity index 87% rename from components/settings/settings-segment.js rename to components/settings/common/settings-segment.js index 208f1a6..e33fd13 100644 --- a/components/settings/settings-segment.js +++ b/components/settings/common/settings-segment.js @@ -2,8 +2,8 @@ import React from 'react' import PropTypes from 'prop-types' import { View } from 'react-native' -import AppText from '../app-text' -import styles from '../../styles' +import AppText from '../../app-text' +import styles from '../../../styles' const SettingsSegment = ({ children, ...props }) => { const style = [styles.settingsSegment, props.style] diff --git a/components/settings/data-management/delete-data.js b/components/settings/data-management/delete-data.js index 18fdb46..36af3ef 100644 --- a/components/settings/data-management/delete-data.js +++ b/components/settings/data-management/delete-data.js @@ -4,9 +4,9 @@ import { Alert, ToastAndroid } from 'react-native' import { clearDb, isDbEmpty } from '../../../db' import { hasEncryptionObservable } from '../../../local-storage' -import SettingsButton from '../settings-button' +import SettingsButton from '../common/settings-button' import ConfirmWithPassword from '../common/confirm-with-password' -import alertError from '../alert-error' +import alertError from '../common/alert-error' import settings from '../../../i18n/en/settings' import { shared as sharedLabels } from '../../../i18n/en/labels' diff --git a/components/settings/data-management/export-dialog.js b/components/settings/data-management/export-dialog.js index cfc5f5d..8200b68 100644 --- a/components/settings/data-management/export-dialog.js +++ b/components/settings/data-management/export-dialog.js @@ -2,7 +2,7 @@ import Share from 'react-native-share' import { getCycleDaysSortedByDate } from '../../../db' import getDataAsCsvDataUri from '../../../lib/import-export/export-to-csv' -import alertError from '../alert-error' +import alertError from '../common/alert-error' import settings from '../../../i18n/en/settings' import { EXPORT_FILE_NAME } from './constants' import RNFS from 'react-native-fs' diff --git a/components/settings/data-management/import-dialog.js b/components/settings/data-management/import-dialog.js index 2ff977e..e35204e 100644 --- a/components/settings/data-management/import-dialog.js +++ b/components/settings/data-management/import-dialog.js @@ -4,7 +4,7 @@ import rnfs from 'react-native-fs' import importCsv from '../../../lib/import-export/import-from-csv' import { shared as sharedLabels } from '../../../i18n/en/labels' import labels from '../../../i18n/en/settings' -import alertError from '../alert-error' +import alertError from '../common/alert-error' export default function openImportDialogAndImport() { Alert.alert( diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index 93887b8..1480aeb 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -1,8 +1,8 @@ import React from 'react' import { ScrollView } from 'react-native' import AppText from '../../app-text' -import SettingsSegment from '../settings-segment' -import SettingsButton from '../settings-button' +import SettingsSegment from '../common/settings-segment' +import SettingsButton from '../common/settings-button' import openImportDialogAndImport from './import-dialog' import openShareDialogAndExport from './export-dialog' import DeleteData from './delete-data' diff --git a/components/settings/nfp-settings/index.js b/components/settings/nfp-settings/index.js index 7d27698..98b27e0 100644 --- a/components/settings/nfp-settings/index.js +++ b/components/settings/nfp-settings/index.js @@ -6,7 +6,7 @@ import Hyperlink from 'react-native-hyperlink' import styles, { iconStyles } from '../../../styles' import labels from '../../../i18n/en/settings' import AppText from '../../app-text' -import SettingsSegment from '../settings-segment' +import SettingsSegment from '../common/settings-segment' import TempSlider from './temp-slider' import UseCervixSetting from './use-cervix' import Icon from 'react-native-vector-icons/Entypo' diff --git a/components/settings/nfp-settings/temp-slider.js b/components/settings/nfp-settings/temp-slider.js index 9dcdfb9..822a092 100644 --- a/components/settings/nfp-settings/temp-slider.js +++ b/components/settings/nfp-settings/temp-slider.js @@ -9,7 +9,7 @@ import { import { secondaryColor } from '../../../styles/index' import labels from '../../../i18n/en/settings' import config from '../../../config' -import alertError from '../alert-error' +import alertError from '../common/alert-error' export default class TempSlider extends Component { constructor(props) { diff --git a/components/settings/password/check-current-password.js b/components/settings/password/check-current-password.js deleted file mode 100644 index 92d78bf..0000000 --- a/components/settings/password/check-current-password.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Alert } from 'react-native' -import { openDb } from '../../../db' -import { shared } from '../../../i18n/en/labels' - -export default async function checkPassword({hash, onCancel, onTryAgain }) { - try { - await openDb(hash) - return true - } catch (err) { - Alert.alert( - shared.incorrectPassword, - shared.incorrectPasswordMessage, - [{ - text: shared.cancel, - onPress: onCancel - }, { - text: shared.tryAgain, - onPress: onTryAgain - }] - ) - return false - } -} \ No newline at end of file diff --git a/components/settings/password/create.js b/components/settings/password/create.js index cdc9b69..44b08a0 100644 --- a/components/settings/password/create.js +++ b/components/settings/password/create.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import { View } from 'react-native' import settings from '../../../i18n/en/settings' import EnterNewPassword from './enter-new-password' -import SettingsButton from '../settings-button' +import SettingsButton from '../common/settings-button' import showBackUpReminder from './show-backup-reminder' export default class CreatePassword extends Component { diff --git a/components/settings/password/delete.js b/components/settings/password/delete.js index 016cae4..3792a04 100644 --- a/components/settings/password/delete.js +++ b/components/settings/password/delete.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import labels from '../../../i18n/en/settings' import { changeEncryptionAndRestartApp } from '../../../db' import ConfirmWithPassword from '../common/confirm-with-password' -import SettingsButton from '../settings-button' +import SettingsButton from '../common/settings-button' export default class DeletePassword extends Component { constructor() { diff --git a/components/settings/password/enter-new-password.js b/components/settings/password/enter-new-password.js index 084a6bc..2b0faa1 100644 --- a/components/settings/password/enter-new-password.js +++ b/components/settings/password/enter-new-password.js @@ -4,8 +4,8 @@ import nodejs from 'nodejs-mobile-react-native' import { requestHash, changeEncryptionAndRestartApp } from '../../../db' import AppText from '../../app-text' -import PasswordField from './password-field' -import SettingsButton from '../settings-button' +import PasswordField from '../common/password-field' +import SettingsButton from '../common/settings-button' import styles from '../../../styles' import settings from '../../../i18n/en/settings' diff --git a/components/settings/password/index.js b/components/settings/password/index.js index ccc2452..50e9f88 100644 --- a/components/settings/password/index.js +++ b/components/settings/password/index.js @@ -1,9 +1,9 @@ import React, { Component } from 'react' -import { View, ScrollView } from 'react-native' +import { ScrollView } from 'react-native' import CreatePassword from './create' import ChangePassword from './update' import DeletePassword from './delete' -import SettingsSegment from '../settings-segment' +import SettingsSegment from '../common/settings-segment' import AppText from '../../app-text' import { hasEncryptionObservable @@ -14,8 +14,7 @@ export default class PasswordSetting extends Component { constructor(props) { super(props) this.state = { - showUpdateAndDelete: hasEncryptionObservable.value, - showCreate: !hasEncryptionObservable.value, + isPasswordSet: hasEncryptionObservable.value, isChangingPassword: false, isDeletingPassword: false } @@ -32,43 +31,37 @@ export default class PasswordSetting extends Component { render() { const { - showUpdateAndDelete, + isPasswordSet, isChangingPassword, isDeletingPassword, - showCreate } = this.state + const { + title, + explainerEnabled, + explainerDisabled + } = labels.passwordSettings + return ( - + + + { isPasswordSet ? explainerEnabled : explainerDisabled } + - {showUpdateAndDelete ? - {labels.passwordSettings.explainerEnabled} - : - {labels.passwordSettings.explainerDisabled} - } + { !isPasswordSet && } - { - showUpdateAndDelete && ( - - {(isChangingPassword - || !isChangingPassword && !isDeletingPassword) - && } - {(isDeletingPassword - || !isChangingPassword && !isDeletingPassword) - && } - - ) - } - - {showCreate && - - } + { (isPasswordSet && !isDeletingPassword) && ( + + )} + { (isPasswordSet && !isChangingPassword) && ( + + )} ) diff --git a/components/settings/password/update.js b/components/settings/password/update.js index 81b2ba9..2dfc15f 100644 --- a/components/settings/password/update.js +++ b/components/settings/password/update.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import settings from '../../../i18n/en/settings' import EnterNewPassword from './enter-new-password' -import SettingsButton from '../settings-button' +import SettingsButton from '../common/settings-button' import showBackUpReminder from './show-backup-reminder' import ConfirmWithPassword from '../common/confirm-with-password' diff --git a/components/settings/reminders/index.js b/components/settings/reminders/index.js index e21a0dd..62ca7b8 100644 --- a/components/settings/reminders/index.js +++ b/components/settings/reminders/index.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import { ScrollView, } from 'react-native' -import SettingsSegment from '../settings-segment' +import SettingsSegment from '../common/settings-segment' import TempReminderPicker from './temp-reminder-picker' import PeriodReminderPicker from './period-reminder' diff --git a/i18n/en/labels.js b/i18n/en/labels.js index 0f569aa..c4b952a 100644 --- a/i18n/en/labels.js +++ b/i18n/en/labels.js @@ -11,7 +11,7 @@ export const shared = { incorrectPasswordMessage: 'That password is incorrect.', tryAgain: 'Try again', ok: 'OK', - unlock: 'Unlock', + confirmToProceed: 'Confirm to proceed', date: 'Date', cycleDayWithLinebreak: 'Cycle\nday', loading: 'Loading ...',