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 eb035b39..76b50a0c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -29,6 +29,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.view.ActionMode; import androidx.appcompat.widget.SearchView; @@ -76,6 +77,8 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene private boolean _loaded; private boolean _isRecreated; private boolean _isDPadPressed; + private boolean _isDoingIntro; + private boolean _isAuthenticating; private String _submittedSearchSubtitle; private String _searchQueryInputText; @@ -101,13 +104,16 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene setSupportActionBar(findViewById(R.id.toolbar)); _loaded = false; _isDPadPressed = false; - + _isDoingIntro = false; + _isAuthenticating = false; if (savedInstanceState != null) { _isRecreated = true; _searchQueryInputText = savedInstanceState.getString("searchQueryInputText"); _activeSearchFilter = savedInstanceState.getString("activeSearchFilter"); _submittedSearchSubtitle = savedInstanceState.getString("submittedSearchSubtitle"); + _isDoingIntro = savedInstanceState.getBoolean("isDoingIntro"); + _isAuthenticating = savedInstanceState.getBoolean("isAuthenticating"); } _entryListView = (EntryListView) getSupportFragmentManager().findFragmentById(R.id.key_profiles); @@ -169,15 +175,23 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene } @Override - protected void onSaveInstanceState(Bundle instance) { + protected void onSaveInstanceState(@NonNull Bundle instance) { super.onSaveInstanceState(instance); instance.putString("activeSearchFilter", _activeSearchFilter); instance.putString("submittedSearchSubtitle", _submittedSearchSubtitle); instance.putString("searchQueryInputText", _searchQueryInputText); + instance.putBoolean("isDoingIntro", _isDoingIntro); + instance.putBoolean("isAuthenticating", _isAuthenticating); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == CODE_DECRYPT) { + _isAuthenticating = false; + } + if (requestCode == CODE_DO_INTRO) { + _isDoingIntro = false; + } if (resultCode != RESULT_OK) { return; } @@ -289,6 +303,14 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene startActivityForResult(intent, requestCode); } + private void startIntroActivity() { + if (!_isDoingIntro) { + Intent intro = new Intent(this, IntroActivity.class); + startActivityForResult(intro, CODE_DO_INTRO); + _isDoingIntro = true; + } + } + private void onScanResult(Intent data) { List entries = (ArrayList) data.getSerializableExtra("entries"); if (entries != null) { @@ -571,8 +593,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene if (_prefs.isIntroDone()) { Toast.makeText(this, getString(R.string.vault_not_found), Toast.LENGTH_SHORT).show(); } - Intent intro = new Intent(this, IntroActivity.class); - startActivityForResult(intro, CODE_DO_INTRO); + startIntroActivity(); return; } @@ -766,9 +787,12 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene } private void startAuthActivity(boolean inhibitBioPrompt) { - Intent intent = new Intent(this, AuthActivity.class); - intent.putExtra("inhibitBioPrompt", inhibitBioPrompt); - startActivityForResult(intent, CODE_DECRYPT); + if (!_isAuthenticating) { + Intent intent = new Intent(this, AuthActivity.class); + intent.putExtra("inhibitBioPrompt", inhibitBioPrompt); + startActivityForResult(intent, CODE_DECRYPT); + _isAuthenticating = true; + } } private void updateLockIcon() {