diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/BackupUploadStateMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/BackupUploadStateMapper.kt index 57a3914253..e8d90f954f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/BackupUploadStateMapper.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/encryption/BackupUploadStateMapper.kt @@ -24,11 +24,20 @@ class BackupUploadStateMapper { return when (rustEnableProgress) { RustBackupUploadState.Done -> BackupUploadState.Done - is RustBackupUploadState.Uploading -> - BackupUploadState.Uploading( - backedUpCount = rustEnableProgress.backedUpCount.toInt(), - totalCount = rustEnableProgress.totalCount.toInt(), - ) + is RustBackupUploadState.Uploading -> { + val backedUpCount = rustEnableProgress.backedUpCount.toInt() + val totalCount = rustEnableProgress.totalCount.toInt() + if (backedUpCount == totalCount) { + // Consider that the state is Done in this case, + // the SDK will not send a Done state + BackupUploadState.Done + } else { + BackupUploadState.Uploading( + backedUpCount = backedUpCount, + totalCount = totalCount, + ) + } + } RustBackupUploadState.Waiting -> BackupUploadState.Waiting RustBackupUploadState.Error ->