From 4ac7e670883843aba3e3df8b15243a9995c7d485 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 19 Nov 2024 16:46:29 -0500 Subject: [PATCH] Bakup warnings --- src/cheogram/res/values/strings.xml | 1 + .../settings/BackupSettingsFragment.java | 20 ++++++++++++++++++- src/main/res/xml/preferences_backup.xml | 4 ++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/cheogram/res/values/strings.xml b/src/cheogram/res/values/strings.xml index 89e8d8ab4d6e4bcb84db678c62a31383a36c6073..efeeb2a0d5486e9e3795aa40911b2296a77285b4 100644 --- a/src/cheogram/res/values/strings.xml +++ b/src/cheogram/res/values/strings.xml @@ -53,4 +53,5 @@ Ask your browser to render as if integrated with this app ("custom tab") Export Data (experimental) Export data useful for importing into another app. Not a full backup. + Full backups are meant for restore after a device loss, or for migrating to a new device. You cannot restore a backup to another app while still being connected with this one! diff --git a/src/main/java/eu/siacs/conversations/ui/fragment/settings/BackupSettingsFragment.java b/src/main/java/eu/siacs/conversations/ui/fragment/settings/BackupSettingsFragment.java index 7038f410c4281b2f1bc635707fca00a54267d8ab..ec749405c359dbf5bba21ed4882ba0314d657fe1 100644 --- a/src/main/java/eu/siacs/conversations/ui/fragment/settings/BackupSettingsFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/fragment/settings/BackupSettingsFragment.java @@ -11,6 +11,7 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; import androidx.preference.ListPreference; import androidx.preference.Preference; @@ -29,6 +30,7 @@ import com.google.common.primitives.Longs; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; +import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.persistance.FileBackend; import eu.siacs.conversations.worker.ExportBackupWorker; @@ -131,6 +133,23 @@ public class BackupSettingsFragment extends XmppPreferenceFragment { } private boolean onBackupPreferenceClicked(final Preference preference) { + new AlertDialog.Builder(requireActivity()) + .setTitle("Disable accounts") + .setMessage("Do you want to disable your accounts before making a backup (recommended)?") + .setPositiveButton(R.string.yes, (dialog, whichButton) -> { + for (final var account : requireService().getAccounts()) { + account.setOption(Account.OPTION_DISABLED, true); + if (!requireService().updateAccount(account)) { + Toast.makeText(requireActivity(), R.string.unable_to_update_account, Toast.LENGTH_SHORT).show(); + } + } + aboutToStartOneOffBackup(); + }) + .setNegativeButton(R.string.no, (dialog, whichButton) -> aboutToStartOneOffBackup()).show(); + return true; + } + + private void aboutToStartOneOffBackup() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission( requireContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) @@ -142,7 +161,6 @@ public class BackupSettingsFragment extends XmppPreferenceFragment { } else { startOneOffBackup(); } - return true; } private void startOneOffBackup() { diff --git a/src/main/res/xml/preferences_backup.xml b/src/main/res/xml/preferences_backup.xml index c2e271d749e427ab8ed3e8e7cf98676fced8b05c..32d66261e3b04c7419a8f45096ce9fdeee10f90e 100644 --- a/src/main/res/xml/preferences_backup.xml +++ b/src/main/res/xml/preferences_backup.xml @@ -1,6 +1,10 @@ + +