From 27623edbcde7df03b00a6258aad39a695ee0b953 Mon Sep 17 00:00:00 2001 From: Kamal Bramwell <kamal@elixxir.io> Date: Fri, 2 Dec 2022 09:28:39 -0500 Subject: [PATCH] Initialize Crust with UD instance --- .../xxlabs/messenger/backup/bindings/BackupService.kt | 3 +++ .../backup/bindings/BindingsBackupMediator.kt | 8 ++++++++ .../messenger/backup/data/BackupLocationRepository.kt | 2 +- .../messenger/backup/data/backup/BackupMediator.kt | 11 +++++++++++ .../messenger/repository/client/ClientRepository.kt | 9 +++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) 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 0e5d7fee..4583b0c7 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,9 +1,12 @@ package io.xxlabs.messenger.backup.bindings +import bindings.UserDiscovery import io.xxlabs.messenger.backup.data.restore.RestoreLogger import io.xxlabs.messenger.bindings.wrapper.contact.ContactWrapperBase interface BackupService { + fun initializeCrustIntegration(userDiscovery: UserDiscovery, receptionRsaPrivKey: ByteArray) + val backupFilePath: String /** * Assists in debugging restore-related issues. 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 f85abde6..c1cd03d4 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,5 +1,6 @@ package io.xxlabs.messenger.backup.bindings +import bindings.UserDiscovery import io.xxlabs.messenger.backup.data.restore.RestoreLogger import io.xxlabs.messenger.bindings.listeners.MessageReceivedListener import io.xxlabs.messenger.bindings.wrapper.contact.ContactWrapperBase @@ -28,6 +29,13 @@ class BindingsBackupMediator @Inject constructor( private val restoreHandler = BindingsRestoreHandler(preferences, daoRepo, messageReceivedListener, backupHandler) + override fun initializeCrustIntegration( + userDiscovery: UserDiscovery, + receptionRsaPrivKey: ByteArray + ) { + + } + override val backupFilePath: String get() = File(appContext().filesDir, BACKUP_FILE_NAME).path 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 8cddcfce..c9835be0 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,7 +14,7 @@ abstract class BackupLocationRepository( backupService: BackupService, ) : AccountBackupDataSource { - private val crustApi = BindingsCrustMediator() + protected val crustApi = BindingsCrustMediator() protected val googleDrive = GoogleDrive.getInstance(backupService, preferences) protected val dropbox = Dropbox.getInstance(backupService, preferences) 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 fa696e60..fa357a46 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,5 +1,6 @@ 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 @@ -15,6 +16,16 @@ 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/repository/client/ClientRepository.kt b/app/src/main/java/io/xxlabs/messenger/repository/client/ClientRepository.kt index d12615f8..50c1b48a 100644 --- a/app/src/main/java/io/xxlabs/messenger/repository/client/ClientRepository.kt +++ b/app/src/main/java/io/xxlabs/messenger/repository/client/ClientRepository.kt @@ -3,6 +3,7 @@ package io.xxlabs.messenger.repository.client import android.content.Context import bindings.Bindings import bindings.NetworkHealthCallback +import bindings.UserDiscovery import com.google.android.gms.tasks.OnCompleteListener import com.google.firebase.messaging.FirebaseMessaging import io.reactivex.Maybe @@ -224,6 +225,7 @@ class ClientRepository @Inject constructor( try { udWrapperBindings = BindingsWrapperBindings .newUserDiscovery(clientWrapper) as UserDiscoveryWrapperBindings + initializeCrust(udWrapperBindings.userDiscovery) emitter.onSuccess(true) } catch (e: Exception) { emitter.onError(e) @@ -231,6 +233,13 @@ class ClientRepository @Inject constructor( } } + private fun initializeCrust(userDiscovery: UserDiscovery) { + backupService.initializeCrustIntegration( + userDiscovery, + clientWrapper.client.user.receptionRSAPrivateKeyPem + ) + } + override fun isLoggedIn(): Single<Boolean> { return hasInitialized() } -- GitLab