diff --git a/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/CrustDataSource.kt b/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/CrustDataSource.kt index 2ffbad539ef8df1543819ca9c44a13a836b3a298..6ac3f6dd6581dc23889cf9f157c3845cb69dd30e 100644 --- a/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/CrustDataSource.kt +++ b/app/src/main/java/io/xxlabs/messenger/backup/cloud/crust/CrustDataSource.kt @@ -4,7 +4,7 @@ import bindings.Bindings import bindings.UserDiscovery interface CrustDataSource { - suspend fun uploadBackup(path: String): ByteArray + suspend fun uploadBackup(path: String): Result<ByteArray> suspend fun recoverBackup(username: String): Result<ByteArray> } @@ -14,10 +14,15 @@ class BindingsCrustMediator( ) : CrustDataSource { - override suspend fun uploadBackup(path: String): ByteArray { - return udManager?.let { - Bindings.uploadBackup(path, udManager, receptionRsaPrivateKey) - } ?: byteArrayOf() + override suspend fun uploadBackup(path: String): Result<ByteArray> { + return try { + udManager?.let { + val uploadSuccessReport = Bindings.uploadBackup(path, udManager, receptionRsaPrivateKey) + Result.success(uploadSuccessReport) + } ?: Result.failure(Exception("Failed to run backup. UserDiscovery not initialized.")) + } catch (e: Exception) { + Result.failure(e) + } } override suspend fun recoverBackup(username: String): Result<ByteArray> {