From 7b87424aebdea5dadec9633b390a899d248d0882 Mon Sep 17 00:00:00 2001
From: mashazyu <mariya.z@gmail.com>
Date: Mon, 7 Jan 2019 18:55:06 +0100
Subject: [PATCH] Bug fix for showing irrelevant buttons on the password
 management page

---
 components/settings/password/delete.js |  1 +
 components/settings/password/index.js  | 44 +++++++++++++++++++++-----
 components/settings/password/update.js |  1 +
 3 files changed, 38 insertions(+), 8 deletions(-)

diff --git a/components/settings/password/delete.js b/components/settings/password/delete.js
index c80b397e..016cae43 100644
--- a/components/settings/password/delete.js
+++ b/components/settings/password/delete.js
@@ -14,6 +14,7 @@ export default class DeletePassword extends Component {
 
   startConfirmWithPassword = () => {
     this.setState({ enteringCurrentPassword: true })
+    this.props.onStartDeletingPassword()
   }
 
   startDeletePassword = async () => {
diff --git a/components/settings/password/index.js b/components/settings/password/index.js
index fca09664..ccc24529 100644
--- a/components/settings/password/index.js
+++ b/components/settings/password/index.js
@@ -15,29 +15,57 @@ export default class PasswordSetting extends Component {
     super(props)
     this.state = {
       showUpdateAndDelete: hasEncryptionObservable.value,
-      showCreate: !hasEncryptionObservable.value
+      showCreate: !hasEncryptionObservable.value,
+      isChangingPassword: false,
+      isDeletingPassword: false
     }
   }
 
+  onChangingPassword = () => {
+    this.setState({ isChangingPassword: true })
+  }
+
+  onDeletingPassword = () => {
+    this.setState({ isDeletingPassword: true })
+  }
+
   render() {
+
+    const {
+      showUpdateAndDelete,
+      isChangingPassword,
+      isDeletingPassword,
+      showCreate
+    } = this.state
+
     return (
       <ScrollView>
         <SettingsSegment title={labels.passwordSettings.title}>
 
-          {this.state.showUpdateAndDelete ?
+          {showUpdateAndDelete ?
             <AppText>{labels.passwordSettings.explainerEnabled}</AppText>
             :
             <AppText>{labels.passwordSettings.explainerDisabled}</AppText>
           }
 
-          {this.state.showUpdateAndDelete &&
-          <View>
-            <ChangePassword/>
-            <DeletePassword/>
-          </View>
+          {
+            showUpdateAndDelete && (
+              <View>
+                {(isChangingPassword
+                  || !isChangingPassword && !isDeletingPassword)
+                && <ChangePassword
+                  onStartChangingPassword = {this.onChangingPassword}
+                />}
+                {(isDeletingPassword
+                  || !isChangingPassword && !isDeletingPassword)
+                && <DeletePassword
+                  onStartDeletingPassword = {this.onDeletingPassword}
+                />}
+              </View>
+            )
           }
 
-          {this.state.showCreate &&
+          {showCreate &&
           <CreatePassword/>
           }
 
diff --git a/components/settings/password/update.js b/components/settings/password/update.js
index 3879df49..81b2ba92 100644
--- a/components/settings/password/update.js
+++ b/components/settings/password/update.js
@@ -20,6 +20,7 @@ export default class ChangePassword extends Component {
     showBackUpReminder(() => {
       this.setState({ enteringCurrentPassword: true })
     })
+    this.props.onStartChangingPassword()
   }
 
   startEnteringNewPassword = () => {
-- 
GitLab