mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-06-24 18:10:58 +00:00
Don't add new entries to the view if restoring from instance state
Also addresses other potential issues with the same cause. Fixes #363.
This commit is contained in:
parent
6a2992530e
commit
34718a7b89
3 changed files with 45 additions and 34 deletions
|
@ -215,24 +215,26 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
||||||
|
|
||||||
private void onPreferencesResult(Intent data) {
|
private void onPreferencesResult(Intent data) {
|
||||||
// refresh the entire entry list if needed
|
// refresh the entire entry list if needed
|
||||||
if (data.getBooleanExtra("needsRecreate", false)) {
|
if (_loaded) {
|
||||||
recreate();
|
if (data.getBooleanExtra("needsRecreate", false)) {
|
||||||
} else if (data.getBooleanExtra("needsRefresh", false)) {
|
recreate();
|
||||||
boolean showAccountName = getPreferences().isAccountNameVisible();
|
} else if (data.getBooleanExtra("needsRefresh", false)) {
|
||||||
int codeGroupSize = getPreferences().getCodeGroupSize();
|
boolean showAccountName = getPreferences().isAccountNameVisible();
|
||||||
boolean searchAccountName = getPreferences().isSearchAccountNameEnabled();
|
int codeGroupSize = getPreferences().getCodeGroupSize();
|
||||||
boolean highlightEntry = getPreferences().isEntryHighlightEnabled();
|
boolean searchAccountName = getPreferences().isSearchAccountNameEnabled();
|
||||||
boolean tapToReveal = getPreferences().isTapToRevealEnabled();
|
boolean highlightEntry = getPreferences().isEntryHighlightEnabled();
|
||||||
int tapToRevealTime = getPreferences().getTapToRevealTime();
|
boolean tapToReveal = getPreferences().isTapToRevealEnabled();
|
||||||
ViewMode viewMode = getPreferences().getCurrentViewMode();
|
int tapToRevealTime = getPreferences().getTapToRevealTime();
|
||||||
_entryListView.setShowAccountName(showAccountName);
|
ViewMode viewMode = getPreferences().getCurrentViewMode();
|
||||||
_entryListView.setCodeGroupSize(codeGroupSize);
|
_entryListView.setShowAccountName(showAccountName);
|
||||||
_entryListView.setSearchAccountName(searchAccountName);
|
_entryListView.setCodeGroupSize(codeGroupSize);
|
||||||
_entryListView.setHighlightEntry(highlightEntry);
|
_entryListView.setSearchAccountName(searchAccountName);
|
||||||
_entryListView.setTapToReveal(tapToReveal);
|
_entryListView.setHighlightEntry(highlightEntry);
|
||||||
_entryListView.setTapToRevealTime(tapToRevealTime);
|
_entryListView.setTapToReveal(tapToReveal);
|
||||||
_entryListView.setViewMode(viewMode);
|
_entryListView.setTapToRevealTime(tapToRevealTime);
|
||||||
_entryListView.refresh(true);
|
_entryListView.setViewMode(viewMode);
|
||||||
|
_entryListView.refresh(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,7 +256,9 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
||||||
} else {
|
} else {
|
||||||
for (VaultEntry entry : entries) {
|
for (VaultEntry entry : entries) {
|
||||||
_vault.addEntry(entry);
|
_vault.addEntry(entry);
|
||||||
_entryListView.addEntry(entry);
|
if (_loaded) {
|
||||||
|
_entryListView.addEntry(entry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
saveVault();
|
saveVault();
|
||||||
|
@ -262,19 +266,23 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAddEntryResult(Intent data) {
|
private void onAddEntryResult(Intent data) {
|
||||||
UUID entryUUID = (UUID) data.getSerializableExtra("entryUUID");
|
if (_loaded) {
|
||||||
VaultEntry entry = _vault.getEntryByUUID(entryUUID);
|
UUID entryUUID = (UUID) data.getSerializableExtra("entryUUID");
|
||||||
_entryListView.addEntry(entry);
|
VaultEntry entry = _vault.getEntryByUUID(entryUUID);
|
||||||
|
_entryListView.addEntry(entry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onEditEntryResult(Intent data) {
|
private void onEditEntryResult(Intent data) {
|
||||||
UUID entryUUID = (UUID) data.getSerializableExtra("entryUUID");
|
if (_loaded) {
|
||||||
|
UUID entryUUID = (UUID) data.getSerializableExtra("entryUUID");
|
||||||
|
|
||||||
if (data.getBooleanExtra("delete", false)) {
|
if (data.getBooleanExtra("delete", false)) {
|
||||||
_entryListView.removeEntry(entryUUID);
|
_entryListView.removeEntry(entryUUID);
|
||||||
} else {
|
} else {
|
||||||
VaultEntry entry = _vault.getEntryByUUID(entryUUID);
|
VaultEntry entry = _vault.getEntryByUUID(entryUUID);
|
||||||
_entryListView.replaceEntry(entryUUID, entry);
|
_entryListView.replaceEntry(entryUUID, entry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -615,10 +623,11 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadEntries() {
|
private void loadEntries() {
|
||||||
List<VaultEntry> entries = new ArrayList<>(_vault.getEntries());
|
if (!_loaded) {
|
||||||
_entryListView.addEntries(entries);
|
_entryListView.addEntries(_vault.getEntries());
|
||||||
_entryListView.runEntriesAnimation();
|
_entryListView.runEntriesAnimation();
|
||||||
_loaded = true;
|
_loaded = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startAuthActivity() {
|
private void startAuthActivity() {
|
||||||
|
|
|
@ -18,6 +18,7 @@ import com.beemdevelopment.aegis.otp.TotpInfo;
|
||||||
import com.beemdevelopment.aegis.vault.VaultEntry;
|
import com.beemdevelopment.aegis.vault.VaultEntry;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -127,7 +128,7 @@ public class EntryAdapter extends RecyclerView.Adapter<EntryHolder> implements I
|
||||||
checkPeriodUniformity();
|
checkPeriodUniformity();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addEntries(List<VaultEntry> entries) {
|
public void addEntries(Collection<VaultEntry> entries) {
|
||||||
_entries.addAll(entries);
|
_entries.addAll(entries);
|
||||||
updateShownEntries();
|
updateShownEntries();
|
||||||
checkPeriodUniformity(true);
|
checkPeriodUniformity(true);
|
||||||
|
|
|
@ -33,6 +33,7 @@ import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader;
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
||||||
import com.bumptech.glide.util.ViewPreloadSizeProvider;
|
import com.bumptech.glide.util.ViewPreloadSizeProvider;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -253,7 +254,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener {
|
||||||
updateEmptyState();
|
updateEmptyState();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addEntries(List<VaultEntry> entries) {
|
public void addEntries(Collection<VaultEntry> entries) {
|
||||||
_adapter.addEntries(entries);
|
_adapter.addEntries(entries);
|
||||||
updateEmptyState();
|
updateEmptyState();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue