Add ability to disable backup reminder

This commit is contained in:
Michael Schättgen 2023-02-05 18:31:31 +01:00
parent fd42c5c893
commit 61d41a26fa
40 changed files with 96 additions and 38 deletions

View file

@ -278,6 +278,14 @@ public class Preferences {
setBuiltInBackupResult(null);
}
public boolean isBackupReminderEnabled() {
return _prefs.getBoolean("pref_backup_reminder", true);
}
public void setIsBackupReminderEnabled(boolean enabled) {
_prefs.edit().putBoolean("pref_backup_reminder", enabled).apply();
}
public Uri getBackupsLocation() {
String str = _prefs.getString("pref_backups_location", null);
if (str != null) {

View file

@ -825,14 +825,23 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
});
});
_btnErrorBar.setVisibility(View.VISIBLE);
} else if (_prefs.isBackupsReminderNeeded()) {
} else if (_prefs.isBackupsReminderNeeded() && _prefs.isBackupReminderEnabled()) {
Date date = _prefs.getLatestBackupOrExportTime();
if (date != null) {
_textErrorBar.setText(getString(R.string.backup_reminder_bar_message_with_latest, TimeUtils.getElapsedSince(this, date)));
} else {
_textErrorBar.setText(R.string.backup_reminder_bar_message);
}
_btnErrorBar.setOnClickListener(view -> startPreferencesActivity());
_btnErrorBar.setOnClickListener(view -> {
Dialogs.showSecureDialog(new AlertDialog.Builder(this)
.setTitle(R.string.backup_reminder_bar_dialog_title)
.setMessage(R.string.backup_reminder_bar_dialog_summary)
.setPositiveButton(R.string.backup_reminder_bar_dialog_accept, (dialog, whichButton) -> {
startPreferencesActivity(BackupsPreferencesFragment.class, "pref_backups");
})
.setNegativeButton(android.R.string.cancel, null)
.create());
});
_btnErrorBar.setVisibility(View.VISIBLE);
} else if (_prefs.isPlaintextBackupWarningNeeded()) {
_textErrorBar.setText(R.string.backup_plaintext_export_warning);

View file

@ -23,6 +23,7 @@ import com.beemdevelopment.aegis.vault.VaultRepositoryException;
public class BackupsPreferencesFragment extends PreferencesFragment {
private SwitchPreferenceCompat _androidBackupsPreference;
private SwitchPreferenceCompat _backupsPreference;
private SwitchPreferenceCompat _backupReminderPreference;
private Preference _backupsLocationPreference;
private Preference _backupsTriggerPreference;
private Preference _backupsVersionsPreference;
@ -72,6 +73,22 @@ public class BackupsPreferencesFragment extends PreferencesFragment {
return false;
});
_backupReminderPreference = requirePreference("pref_backup_reminder");
_backupReminderPreference.setOnPreferenceChangeListener((preference, newValue) -> {
if (!(boolean)newValue) {
Dialogs.showCheckboxDialog(getContext(), R.string.pref_backups_reminder_dialog_title,
R.string.pref_backups_reminder_dialog_summary,
R.string.understand_risk_accept,
this::saveAndDisableBackupReminder
);
} else {
_prefs.setIsBackupReminderEnabled(true);
return true;
}
return false;
});
_androidBackupsPreference = requirePreference("pref_android_backups");
_androidBackupsPreference.setOnPreferenceChangeListener((preference, newValue) -> {
_prefs.setIsAndroidBackupsEnabled((boolean) newValue);
@ -113,6 +130,13 @@ public class BackupsPreferencesFragment extends PreferencesFragment {
});
}
private void saveAndDisableBackupReminder(boolean understand) {
if (understand) {
_prefs.setIsBackupReminderEnabled(false);
updateBackupPreference();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null && requestCode == CODE_BACKUPS) {
@ -140,11 +164,13 @@ public class BackupsPreferencesFragment extends PreferencesFragment {
boolean encrypted = _vaultManager.getVault().isEncryptionEnabled();
boolean androidBackupEnabled = _prefs.isAndroidBackupsEnabled() && encrypted;
boolean backupEnabled = _prefs.isBackupsEnabled() && encrypted;
boolean backupReminderEnabled = _prefs.isBackupReminderEnabled();
_backupsPasswordWarningPreference.setVisible(_vaultManager.getVault().isBackupPasswordSet());
_androidBackupsPreference.setChecked(androidBackupEnabled);
_androidBackupsPreference.setEnabled(encrypted);
_backupsPreference.setChecked(backupEnabled);
_backupsPreference.setEnabled(encrypted);
_backupReminderPreference.setChecked(backupReminderEnabled);
_backupsLocationPreference.setVisible(backupEnabled);
_backupsTriggerPreference.setVisible(backupEnabled);
_backupsVersionsPreference.setVisible(backupEnabled);