diff --git a/components/app-wrapper.js b/components/app-wrapper.js
index 4e8665b..31419b9 100644
--- a/components/app-wrapper.js
+++ b/components/app-wrapper.js
@@ -1,44 +1,86 @@
import React, { Component } from 'react'
-import { View } from 'react-native'
import nodejs from 'nodejs-mobile-react-native'
+
+import { getLicenseFlag, saveEncryptionFlag } from '../local-storage'
+import { openDb } from '../db'
+
import App from './app'
import PasswordPrompt from './password-prompt'
import License from './license'
-import { getLicenseFlag } from '../local-storage'
+import AppLoadingView from './app-loading'
export default class AppWrapper extends Component {
constructor() {
super()
this.state = {
- retrievingLicenseSetting: true
+ isCheckingLicenseAgreement: true,
+ shouldShowLicenseAgreement: false,
+ shouldShowPasswordPrompt: false,
+ shouldShowApp: false,
}
nodejs.start('main.js')
this.checkLicenseAgreement()
+ this.checkDbPasswordSet()
}
async checkLicenseAgreement() {
- const agreed = await getLicenseFlag()
- this.setState({retrievingLicenseSetting: false})
- if (!agreed) this.setState({showLicense: true})
+ const isLicenseFlagSet = await getLicenseFlag()
+ if (!isLicenseFlagSet) {
+ this.enableShowLicenseAgreement()
+ } else {
+ this.setState({ isCheckingLicenseAgreement: false })
+ }
+ }
+
+ async checkDbPasswordSet() {
+ const canConnectToDb = await openDb()
+ if (canConnectToDb) {
+ this.enableShowApp()
+ await saveEncryptionFlag(false)
+ return false
+ }
+ this.setState({ shouldShowPasswordPrompt: true })
+ await saveEncryptionFlag(true)
+ }
+
+ enableShowLicenseAgreement = () => {
+ this.setState({
+ shouldShowLicenseAgreement: true,
+ isCheckingLicenseAgreement: false
+ })
+ }
+
+ disableShowLicenseAgreement = () => {
+ this.setState({ shouldShowLicenseAgreement: false })
+ }
+
+ enableShowApp = () => {
+ this.setState({
+ shouldShowApp: true,
+ shouldShowPasswordPrompt: false
+ })
}
render() {
- const whiteScreen =
- const licenseScreen = {
- this.setState({showLicense: false})
- }}/>
- const passwordPrompt = {
- this.setState({showApp: true})
- }}/>
+ const {
+ isCheckingLicenseAgreement,
+ shouldShowLicenseAgreement,
+ shouldShowPasswordPrompt,
+ shouldShowApp,
+ } = this.state
- if (this.state.retrievingLicenseSetting) {
- return whiteScreen
- } else if (this.state.showLicense) {
- return licenseScreen
- } else if (!this.state.showApp) {
- return passwordPrompt
- } else {
- return
+ if (isCheckingLicenseAgreement) {
+ return
}
+
+ if (shouldShowLicenseAgreement) {
+ return
+ }
+
+ if (shouldShowPasswordPrompt) {
+ return
+ }
+
+ return shouldShowApp &&
}
}
\ No newline at end of file
diff --git a/components/password-prompt.js b/components/password-prompt.js
index 908bc68..356a699 100644
--- a/components/password-prompt.js
+++ b/components/password-prompt.js
@@ -20,19 +20,6 @@ export default class PasswordPrompt extends Component {
this.passHashToDb,
this
)
-
- this.tryToOpenDb()
- }
-
- async tryToOpenDb() {
- const connected = await openDb()
- if (!connected) {
- this.setState({ showPasswordPrompt: true })
- await saveEncryptionFlag(true)
- return
- }
- await saveEncryptionFlag(false)
- this.props.showApp()
}
passHashToDb = async hash => {
@@ -48,7 +35,7 @@ export default class PasswordPrompt extends Component {
)
return
}
- this.props.showApp()
+ this.props.enableShowApp()
}
confirmDeletion = async () => {
@@ -72,7 +59,7 @@ export default class PasswordPrompt extends Component {
onPress: async () => {
await deleteDbAndOpenNew()
await saveEncryptionFlag(false)
- this.props.showApp()
+ this.props.enableShowApp()
}
}]
)
@@ -89,35 +76,32 @@ export default class PasswordPrompt extends Component {
return (
- {this.state.showPasswordPrompt &&
-
-
- this.setState({ password: val })}
- style={styles.passwordPromptField}
- secureTextEntry={true}
- placeholder={labels.enterPassword}
- />
- {
- requestHash('check-pw', this.state.password)
- }}
- disabled={!this.state.password}
- >
-
- {labels.title}
-
-
-
-
- {labels.forgotPassword}
-
-
-
- }
+
+ this.setState({ password: val })}
+ style={styles.passwordPromptField}
+ secureTextEntry={true}
+ placeholder={labels.enterPassword}
+ />
+ {
+ requestHash('check-pw', this.state.password)
+ }}
+ disabled={!this.state.password}
+ >
+
+ {labels.title}
+
+
+
+
+ {labels.forgotPassword}
+
+
+
)
}