diff --git a/components/password-prompt.js b/components/password-prompt.js index 78d1b93e1fc42bfa8d8aaac5b1b663c1e42505c3..6ff590411414b666395ed07ea5f90844c62d7d6e 100644 --- a/components/password-prompt.js +++ b/components/password-prompt.js @@ -1,8 +1,8 @@ import React, { Component } from 'react' import { View, TextInput, TouchableOpacity, Alert, Image } from 'react-native' import nodejs from 'nodejs-mobile-react-native' +import { saveEncryptionFlag } from '../local-storage' import { AppText } from './app-text' -import { hasEncryptionObservable } from '../local-storage' import styles from '../styles' import { passwordPrompt as labels, shared } from './labels' import { requestHash, deleteDbAndOpenNew, openDb } from '../db' @@ -13,21 +13,25 @@ export default class PasswordPrompt extends Component { this.state = { password: null } - hasEncryptionObservable.once(async hasEncryption => { - hasEncryption = JSON.parse(hasEncryption) - if (hasEncryption) { - this.setState({showPasswordPrompt: true}) - } else { - await openDb({persistConnection: true}) - this.props.showApp() - } - }) nodejs.channel.addListener( 'message', this.passHashToDb, this ) + + this.tryToOpenDb() + } + + async tryToOpenDb() { + try { + await openDb({ persistConnection: true }) + await saveEncryptionFlag(false) + } catch (err) { + this.setState({ showPasswordPrompt: true }) + await saveEncryptionFlag(true) + return + } } passHashToDb = async msg => {