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