diff --git a/components/settings/password/delete.js b/components/settings/password/delete.js index 6cef844e5c3896e85c46017ebd0a36e8e7893fe8..c80b397e70905fe8ce93b849e954f865c44a62f1 100644 --- a/components/settings/password/delete.js +++ b/components/settings/password/delete.js @@ -1,80 +1,46 @@ import React, { Component } from 'react' -import { - View, - TouchableOpacity -} from 'react-native' -import nodejs from 'nodejs-mobile-react-native' -import AppText from '../../app-text' -import styles from '../../../styles' import labels from '../../../i18n/en/settings' -import { requestHash, changeEncryptionAndRestartApp } from '../../../db' -import PasswordField from './password-field' -import showBackUpReminder from './show-backup-reminder' -import checkCurrentPassword from './check-current-password' +import { changeEncryptionAndRestartApp } from '../../../db' +import ConfirmWithPassword from '../common/confirm-with-password' +import SettingsButton from '../settings-button' export default class DeletePassword extends Component { constructor() { super() this.state = { - enteringCurrentPassword: false, - currentPassword: null + enteringCurrentPassword: false } - - nodejs.channel.addListener( - 'pre-delete-pw-check', - this.removeEncryption, - this - ) } - componentWillUnmount() { - nodejs.channel.removeListener('pre-delete-pw-check', this.removeEncryption) + startConfirmWithPassword = () => { + this.setState({ enteringCurrentPassword: true }) } - removeEncryption = async hash => { - const passwordIsCorrect = await checkCurrentPassword({ - hash, - onTryAgain: () => this.setState({currentPassword: null}), - onCancel: () => this.setState({ - enteringCurrentPassword: false, - currentPassword: null - }) - }) + startDeletePassword = async () => { + await changeEncryptionAndRestartApp() + } - if (passwordIsCorrect) await changeEncryptionAndRestartApp() + cancelConfirmationWithPassword = () => { + this.setState({ enteringCurrentPassword: false }) } render() { + + const { enteringCurrentPassword } = this.state + + if (enteringCurrentPassword) { + return ( + <ConfirmWithPassword + onSuccess={this.startDeletePassword} + onCancel={this.cancelConfirmationWithPassword} + /> + ) + } + return ( - <View> - {this.state.enteringCurrentPassword && - <PasswordField - onChangeText={val => this.setState({ currentPassword: val })} - value={this.state.currentPassword} - placeholder={labels.passwordSettings.enterCurrent} - /> - } - <TouchableOpacity - onPress={() => { - if (!this.state.enteringCurrentPassword) { - showBackUpReminder(() => { - this.setState({ enteringCurrentPassword: true }) - }, true) - } else { - requestHash('pre-delete-pw-check', this.state.currentPassword) - } - }} - disabled={ - this.state.enteringCurrentPassword && - !this.state.currentPassword - } - style={styles.settingsButton} - > - <AppText style={styles.settingsButtonText}> - {labels.passwordSettings.deletePassword} - </AppText> - </TouchableOpacity> - </View> + <SettingsButton onPress={this.startConfirmWithPassword} > + {labels.passwordSettings.deletePassword} + </SettingsButton> ) } } \ No newline at end of file