mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-19 16:19:33 +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) }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user