From ba3e6203ecb0ea8d7b0c41a185279400ebf5e7d7 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Sun, 5 Jul 2020 19:49:51 +0200 Subject: [PATCH] Fix behavior of AuthActivity under certain conditions - Properly use 'inhibitBioPrompt' - Don't show the biometric prompt when a password reminder is needed --- .../beemdevelopment/aegis/ui/AegisActivity.java | 2 +- .../beemdevelopment/aegis/ui/AuthActivity.java | 16 +++++++++++++--- .../beemdevelopment/aegis/ui/MainActivity.java | 4 ++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java index d5515c4c..e14bc0cf 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java @@ -143,7 +143,7 @@ public abstract class AegisActivity extends AppCompatActivity implements AegisAp * Reports whether this Activity instance has become an orphan. This can happen if * the vault was locked by an external trigger while the Activity was still open. */ - private boolean isOrphan() { + protected boolean isOrphan() { return !(this instanceof MainActivity) && !(this instanceof AuthActivity) && _app.isVaultLocked(); } diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AuthActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AuthActivity.java index 9d189fad..fa55b302 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AuthActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AuthActivity.java @@ -84,7 +84,11 @@ public class AuthActivity extends AegisActivity { }); Intent intent = getIntent(); - _inhibitBioPrompt = savedInstanceState == null ? !intent.getBooleanExtra("_inhibitBioPrompt", true) : savedInstanceState.getBoolean("_inhibitBioPrompt"); + if (savedInstanceState == null) { + _inhibitBioPrompt = intent.getBooleanExtra("inhibitBioPrompt", false); + } else { + _inhibitBioPrompt = savedInstanceState.getBoolean("inhibitBioPrompt", false); + } _cancelAction = (CancelAction) intent.getSerializableExtra("cancelAction"); _slots = (SlotList) intent.getSerializableExtra("slots"); _stateless = _slots != null; @@ -207,11 +211,12 @@ public class AuthActivity extends AegisActivity { public void onResume() { super.onResume(); - if (_bioKey == null || _prefs.isPasswordReminderNeeded()) { + boolean remindPassword = _prefs.isPasswordReminderNeeded(); + if (_bioKey == null || remindPassword) { focusPasswordField(); } - if (_bioKey != null && _bioPrompt == null && !_inhibitBioPrompt) { + if (_bioKey != null && _bioPrompt == null && !_inhibitBioPrompt && !remindPassword) { _bioPrompt = showBiometricPrompt(); } @@ -235,6 +240,11 @@ public class AuthActivity extends AegisActivity { } } + @Override + protected boolean isOrphan() { + return _stateless && super.isOrphan(); + } + private void focusPasswordField() { _textPassword.requestFocus(); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java index 09a7b3cf..88f0b8e9 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -491,7 +491,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene } if (_app.isVaultLocked()) { - startAuthActivity(true); + startAuthActivity(false); } else if (_loaded) { // update the list of groups in the filter menu if (_menu != null) { @@ -753,7 +753,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene _loaded = false; if (isOpen()) { - startAuthActivity(false); + startAuthActivity(true); } super.onLocked();