diff --git a/components/app-wrapper.js b/components/app-wrapper.js index 2769da4..616ad0a 100644 --- a/components/app-wrapper.js +++ b/components/app-wrapper.js @@ -83,7 +83,7 @@ export default class AppWrapper extends Component { } else if (shouldShowPasswordPrompt) { initialView = } else if (shouldShowApp) { - initialView = + initialView = this.checkDbPasswordSet()} /> } return ( diff --git a/components/app.js b/components/app.js index 885c282..082fb28 100644 --- a/components/app.js +++ b/components/app.js @@ -53,7 +53,7 @@ class App extends Component { } render() { - const { date, navigation, goBack } = this.props + const { date, navigation, goBack, restartApp } = this.props const { currentPage } = navigation if (!currentPage) { @@ -80,7 +80,7 @@ class App extends Component { return (
- + ) diff --git a/components/settings/password/create.js b/components/settings/password/create.js index b081afc..ba358e5 100644 --- a/components/settings/password/create.js +++ b/components/settings/password/create.js @@ -34,7 +34,11 @@ export default class CreatePassword extends Component { ) } else { - return + return ( + + ) } } } diff --git a/components/settings/password/delete.js b/components/settings/password/delete.js index 8f078d7..593efca 100644 --- a/components/settings/password/delete.js +++ b/components/settings/password/delete.js @@ -4,13 +4,12 @@ import PropTypes from 'prop-types' import Button from '../../common/button' import ConfirmWithPassword from '../common/confirm-with-password' -import { changeEncryptionAndRestartApp } from '../../../db' import labels from '../../../i18n/en/settings' export default class DeletePassword extends Component { static propTypes = { onStartDelete: PropTypes.func, - onCancelDelete: PropTypes.func + onCancelDelete: PropTypes.func, } constructor() { @@ -24,10 +23,6 @@ export default class DeletePassword extends Component { this.props.onStartDelete() } - startDeletePassword = async () => { - await changeEncryptionAndRestartApp() - } - cancelConfirmationWithPassword = () => { this.setState({ enteringCurrentPassword: false }) this.props.onCancelDelete() @@ -39,7 +34,7 @@ export default class DeletePassword extends Component { if (enteringCurrentPassword) { return ( ) @@ -51,4 +46,4 @@ export default class DeletePassword extends Component { ) } -} \ No newline at end of file +} diff --git a/components/settings/password/enter-new-password.js b/components/settings/password/enter-new-password.js index 33c4c28..75890f7 100644 --- a/components/settings/password/enter-new-password.js +++ b/components/settings/password/enter-new-password.js @@ -6,14 +6,14 @@ import AppText from '../../common/app-text' import AppTextInput from '../../common/app-text-input' import Button from '../../common/button' -import { requestHash, changeEncryptionAndRestartApp } from '../../../db' +import { requestHash } from '../../../db' import { Colors, Spacing } from '../../../styles' import settings from '../../../i18n/en/settings' const LISTENER_TYPE = 'create-or-change-pw' export default class EnterNewPassword extends Component { - constructor() { + constructor(props) { super() this.state = { password: '', @@ -22,13 +22,16 @@ export default class EnterNewPassword extends Component { } nodejs.channel.addListener( LISTENER_TYPE, - changeEncryptionAndRestartApp, + props.changeEncryptionAndRestart, this ) } componentWillUnmount() { - nodejs.channel.removeListener(LISTENER_TYPE, changeEncryptionAndRestartApp) + nodejs.channel.removeListener( + LISTENER_TYPE, + this.props.changeEncryptionAndRestart + ) } savePassword = () => { diff --git a/components/settings/password/index.js b/components/settings/password/index.js index dd480c3..e637cab 100644 --- a/components/settings/password/index.js +++ b/components/settings/password/index.js @@ -1,4 +1,9 @@ import React, { Component } from 'react' +import { connect } from 'react-redux' + +import { navigate } from '../../../slices/navigation' + +import { changeDbEncryption } from '../../../db' import AppPage from '../../common/app-page' import AppText from '../../common/app-text' @@ -11,7 +16,7 @@ import DeletePassword from './delete' import { hasEncryptionObservable } from '../../../local-storage' import labels from '../../../i18n/en/settings' -export default class PasswordSetting extends Component { +class PasswordSetting extends Component { constructor(props) { super(props) @@ -38,6 +43,12 @@ export default class PasswordSetting extends Component { this.setState({ isDeletingPassword: false }) } + changeEncryptionAndRestart = async (hash) => { + await changeDbEncryption(hash) + await this.props.restartApp() + this.props.navigate('Home') + } + render() { const { isPasswordSet, isChangingPassword, isDeletingPassword } = this.state @@ -51,12 +62,17 @@ export default class PasswordSetting extends Component { {isPasswordSet ? explainerEnabled : explainerDisabled} - {!isPasswordSet && } + {!isPasswordSet && ( + + )} {isPasswordSet && !isDeletingPassword && ( )} @@ -64,6 +80,7 @@ export default class PasswordSetting extends Component { )} @@ -71,3 +88,11 @@ export default class PasswordSetting extends Component { ) } } + +const mapDispatchToProps = (dispatch) => { + return { + navigate: (page) => dispatch(navigate(page)), + } +} + +export default connect(null, mapDispatchToProps)(PasswordSetting) diff --git a/components/settings/password/update.js b/components/settings/password/update.js index 270defd..4e0aa15 100644 --- a/components/settings/password/update.js +++ b/components/settings/password/update.js @@ -70,7 +70,11 @@ export default class ChangePassword extends Component { } if (enteringNewPassword) { - return + return ( + + ) } return ( diff --git a/db/index.js b/db/index.js index 67f4ca0..06905de 100644 --- a/db/index.js +++ b/db/index.js @@ -195,7 +195,7 @@ export function requestHash(type, pw) { ) } -export async function changeEncryptionAndRestartApp(hash) { +export async function changeDbEncryption(hash) { let key if (hash) key = hashToInt8Array(hash) const defaultPath = db.path @@ -209,7 +209,6 @@ export async function changeEncryptionAndRestartApp(hash) { db.close() await fs.unlink(defaultPath) await fs.moveFile(copyPath, defaultPath) - restartApp() } export function isDbEmpty() {