mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-02 00:17:41 +01:00
Resolve ANR when deleting local backup.
This commit is contained in:
@@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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) }
|
||||
}
|
||||
|
||||
@@ -4894,6 +4894,8 @@
|
||||
<string name="BackupDialog_delete_backups">Delete backups?</string>
|
||||
<string name="BackupDialog_disable_and_delete_all_local_backups">Disable and delete all local backups?</string>
|
||||
<string name="BackupDialog_delete_backups_statement">Delete backups</string>
|
||||
<!-- Progress dialog message shown while local backup files are being deleted -->
|
||||
<string name="BackupDialog_deleting_local_backup">Deleting local backup…</string>
|
||||
<string name="BackupDialog_to_enable_backups_choose_a_folder">To enable backups, choose a folder. Backups will be saved to this location.</string>
|
||||
<!-- Button shown in dialog to choose a folder for backups -->
|
||||
<string name="BackupDialog_choose_folder">Choose folder</string>
|
||||
|
||||
Reference in New Issue
Block a user