diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsCallback.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsCallback.kt
index 83716e97dc..fbc594f4f8 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsCallback.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsCallback.kt
@@ -16,8 +16,6 @@ import com.google.android.material.timepicker.TimeFormat
import org.signal.core.ui.permissions.Permissions
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
-import org.thoughtcrime.securesms.dependencies.AppDependencies
-import org.thoughtcrime.securesms.jobs.LocalBackupJob
import org.thoughtcrime.securesms.jobs.LocalBackupJob.enqueueArchive
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.service.LocalBackupListener
@@ -144,11 +142,6 @@ class DefaultLocalBackupsSettingsCallback(
}
override fun onTurnOffAndDeleteConfirmed() {
- SignalStore.backup.newLocalBackupsEnabled = false
-
- val path = SignalStore.backup.newLocalBackupsDirectory
- SignalStore.backup.newLocalBackupsDirectory = null
- AppDependencies.jobManager.cancelAllInQueue(LocalBackupJob.QUEUE)
- BackupUtil.deleteUnifiedBackups(fragment.requireContext(), path)
+ viewModel.turnOffAndDelete(fragment.requireContext())
}
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsScreen.kt
index 03cf5f4c84..ce3fb82626 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsScreen.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsScreen.kt
@@ -228,6 +228,10 @@ internal fun LocalBackupsSettingsScreen(
onDismiss = { showTurnOffAndDeleteDialog = false }
)
}
+
+ if (state.isDeleting) {
+ Dialogs.IndeterminateProgressDialog(message = stringResource(id = R.string.BackupDialog_deleting_local_backup))
+ }
}
@DayNightPreview
diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsState.kt
index 2ef973d0ec..6268a24bc7 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsState.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsSettingsState.kt
@@ -18,5 +18,6 @@ data class LocalBackupsSettingsState(
val lastBackupLabel: String? = null,
val folderDisplayName: String? = null,
val scheduleTimeLabel: String? = null,
- val progress: BackupCreationProgress = BackupCreationProgress.Idle
+ val progress: BackupCreationProgress = BackupCreationProgress.Idle,
+ val isDeleting: Boolean = false
)
diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsViewModel.kt
index eda90893a4..75a2bc9b57 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsViewModel.kt
+++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/local/LocalBackupsViewModel.kt
@@ -122,6 +122,22 @@ class LocalBackupsViewModel : ViewModel(), BackupKeyCredentialManagerHandler {
internalSettingsState.update { it.copy(progress = event.progress) }
}
+ fun turnOffAndDelete(context: Context) {
+ internalSettingsState.update { it.copy(isDeleting = true) }
+
+ viewModelScope.launch {
+ withContext(Dispatchers.IO) {
+ SignalStore.backup.newLocalBackupsEnabled = false
+ val path = SignalStore.backup.newLocalBackupsDirectory
+ SignalStore.backup.newLocalBackupsDirectory = null
+ AppDependencies.jobManager.cancelAllInQueue(LocalBackupJob.QUEUE)
+ BackupUtil.deleteUnifiedBackups(context, path)
+ }
+
+ internalSettingsState.update { it.copy(isDeleting = false) }
+ }
+ }
+
override fun updateBackupKeySaveState(newState: BackupKeySaveState?) {
internalBackupState.update { it.copy(keySaveState = newState) }
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5acef43053..0bf9f1697a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4894,6 +4894,8 @@
Delete backups?
Disable and delete all local backups?
Delete backups
+
+ Deleting local backup…
To enable backups, choose a folder. Backups will be saved to this location.
Choose folder