From 749372bd23e2bb4d41850a4c15239d993b8cdbc2 Mon Sep 17 00:00:00 2001
From: Kamal Bramwell <kamal@elixxir.io>
Date: Fri, 2 Dec 2022 11:23:56 -0500
Subject: [PATCH] Move CrustDataSource to BackupService interface

---
 .../xxlabs/messenger/backup/bindings/BackupService.kt |  8 +++++++-
 .../backup/bindings/BindingsBackupMediator.kt         |  8 +++++++-
 .../messenger/backup/cloud/crust/CrustDataSource.kt   |  1 -
 .../messenger/backup/data/BackupLocationRepository.kt |  4 +---
 .../messenger/backup/data/backup/BackupMediator.kt    | 11 -----------
 .../backup/data/backup/BackupPreferencesRepository.kt |  1 +
 .../messenger/repository/base/BasePreferences.kt      |  1 -
 7 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/app/src/main/java/io/xxlabs/messenger/backup/bindings/BackupService.kt b/app/src/main/java/io/xxlabs/messenger/backup/bindings/BackupService.kt
index 4583b0c7..7e2710f1 100644
--- a/app/src/main/java/io/xxlabs/messenger/backup/bindings/BackupService.kt
+++ b/app/src/main/java/io/xxlabs/messenger/backup/bindings/BackupService.kt
@@ -1,11 +1,15 @@
 package io.xxlabs.messenger.backup.bindings
 
 import bindings.UserDiscovery
+import io.xxlabs.messenger.backup.cloud.crust.CrustDataSource
 import io.xxlabs.messenger.backup.data.restore.RestoreLogger
 import io.xxlabs.messenger.bindings.wrapper.contact.ContactWrapperBase
 
 interface BackupService {
-    fun initializeCrustIntegration(userDiscovery: UserDiscovery, receptionRsaPrivKey: ByteArray)
+    /**
+     * Exposes upload and restore functions to/from Crust storage.
+     */
+    val crustApi: CrustDataSource
 
     val backupFilePath: String
     /**
@@ -13,6 +17,8 @@ interface BackupService {
      */
     val restoreLogger: RestoreLogger
 
+    fun initializeCrustIntegration(userDiscovery: UserDiscovery, receptionRsaPrivKey: ByteArray)
+
     /**
      * Set a [BackupTaskCallback] to be notified whenever a new backup file is created.
      */
diff --git a/app/src/main/java/io/xxlabs/messenger/backup/bindings/BindingsBackupMediator.kt b/app/src/main/java/io/xxlabs/messenger/backup/bindings/BindingsBackupMediator.kt
index c1cd03d4..61b1c1b7 100644
--- a/app/src/main/java/io/xxlabs/messenger/backup/bindings/BindingsBackupMediator.kt
+++ b/app/src/main/java/io/xxlabs/messenger/backup/bindings/BindingsBackupMediator.kt
@@ -1,6 +1,7 @@
 package io.xxlabs.messenger.backup.bindings
 
 import bindings.UserDiscovery
+import io.xxlabs.messenger.backup.cloud.crust.BindingsCrustMediator
 import io.xxlabs.messenger.backup.data.restore.RestoreLogger
 import io.xxlabs.messenger.bindings.listeners.MessageReceivedListener
 import io.xxlabs.messenger.bindings.wrapper.contact.ContactWrapperBase
@@ -29,11 +30,16 @@ class BindingsBackupMediator @Inject constructor(
     private val restoreHandler =
         BindingsRestoreHandler(preferences, daoRepo, messageReceivedListener, backupHandler)
 
+    override val crustApi = BindingsCrustMediator()
+
     override fun initializeCrustIntegration(
         userDiscovery: UserDiscovery,
         receptionRsaPrivKey: ByteArray
     ) {
-
+        crustApi.apply {
+            udManager = userDiscovery
+            receptionRsaPrivateKey = receptionRsaPrivKey
+        }
     }
 
     override val backupFilePath: String
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 6ac3f6dd..dab2ef4a 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
@@ -13,7 +13,6 @@ class BindingsCrustMediator(
     var receptionRsaPrivateKey: ByteArray = byteArrayOf()
 ) : CrustDataSource {
 
-
     override suspend fun uploadBackup(path: String): Result<ByteArray> {
         return try {
             udManager?.let {
diff --git a/app/src/main/java/io/xxlabs/messenger/backup/data/BackupLocationRepository.kt b/app/src/main/java/io/xxlabs/messenger/backup/data/BackupLocationRepository.kt
index c9835be0..67741c02 100644
--- a/app/src/main/java/io/xxlabs/messenger/backup/data/BackupLocationRepository.kt
+++ b/app/src/main/java/io/xxlabs/messenger/backup/data/BackupLocationRepository.kt
@@ -14,12 +14,10 @@ abstract class BackupLocationRepository(
     backupService: BackupService,
 ) : AccountBackupDataSource {
 
-    protected val crustApi = BindingsCrustMediator()
-
     protected val googleDrive = GoogleDrive.getInstance(backupService, preferences)
     protected val dropbox = Dropbox.getInstance(backupService, preferences)
     protected val sftp = Sftp.getInstance(backupService, preferences)
-    protected val crust = Crust.getInstance(backupService, preferences, crustApi)
+    protected val crust = Crust.getInstance(backupService, preferences, backupService.crustApi)
 
     override val locations: List<AccountBackup> = listOf(
         googleDrive,
diff --git a/app/src/main/java/io/xxlabs/messenger/backup/data/backup/BackupMediator.kt b/app/src/main/java/io/xxlabs/messenger/backup/data/backup/BackupMediator.kt
index fa357a46..fa696e60 100644
--- a/app/src/main/java/io/xxlabs/messenger/backup/data/backup/BackupMediator.kt
+++ b/app/src/main/java/io/xxlabs/messenger/backup/data/backup/BackupMediator.kt
@@ -1,6 +1,5 @@
 package io.xxlabs.messenger.backup.data.backup
 
-import bindings.UserDiscovery
 import io.xxlabs.messenger.backup.bindings.BackupService
 import io.xxlabs.messenger.backup.data.BackupLocationRepository
 import io.xxlabs.messenger.backup.model.AccountBackup
@@ -16,16 +15,6 @@ class BackupMediator @Inject constructor(
     BackupService by backupService,
     BackupTaskPublisher by backupTaskPublisher
 {
-    override fun initializeCrustIntegration(
-        userDiscovery: UserDiscovery,
-        receptionRsaPrivKey: ByteArray
-    ) {
-        crustApi.apply {
-            udManager = userDiscovery
-            receptionRsaPrivateKey = receptionRsaPrivKey
-        }
-    }
-
     private val settingsHandler: BackupPreferencesDelegate by lazy {
         BackupPreferencesDelegate(preferences, this)
     }
diff --git a/app/src/main/java/io/xxlabs/messenger/backup/data/backup/BackupPreferencesRepository.kt b/app/src/main/java/io/xxlabs/messenger/backup/data/backup/BackupPreferencesRepository.kt
index e4325468..f14154e4 100644
--- a/app/src/main/java/io/xxlabs/messenger/backup/data/backup/BackupPreferencesRepository.kt
+++ b/app/src/main/java/io/xxlabs/messenger/backup/data/backup/BackupPreferencesRepository.kt
@@ -1,6 +1,7 @@
 package io.xxlabs.messenger.backup.data.backup
 
 interface BackupPreferencesRepository {
+    var name: String
     var isBackupEnabled: Boolean
     var isGoogleDriveEnabled: Boolean
     var isDropboxEnabled: Boolean
diff --git a/app/src/main/java/io/xxlabs/messenger/repository/base/BasePreferences.kt b/app/src/main/java/io/xxlabs/messenger/repository/base/BasePreferences.kt
index dc693ac0..e9531f25 100644
--- a/app/src/main/java/io/xxlabs/messenger/repository/base/BasePreferences.kt
+++ b/app/src/main/java/io/xxlabs/messenger/repository/base/BasePreferences.kt
@@ -27,7 +27,6 @@ abstract class BasePreferences : BackupPreferencesRepository, NotificationPrefer
     abstract var currentNotificationsTokenId: String
     abstract var notificationsTokenId: String
     abstract var userId: String
-    abstract var name: String
 
     //Settings
     abstract var areNotificationsOn: Boolean
-- 
GitLab