From fa1a06296ec560500f6592b643b68cf309d41558 Mon Sep 17 00:00:00 2001
From: Kamal Bramwell <kamal@elixxir.io>
Date: Fri, 2 Dec 2022 09:13:34 -0500
Subject: [PATCH] Wrap return values in Result<>

---
 .../backup/cloud/crust/CrustDataSource.kt         | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

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 2ffbad53..6ac3f6dd 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> {
-- 
GitLab