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 0e5d7fee7940a22c6bfd4bdc6ff004cca8fc1669..4583b0c70a46fcaebd59bf8ca7da5e4904791a2c 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 f85abde620ee844c26ecdd32ce0bf50e20afb00b..c1cd03d4613430fb164d708f6861d83ee96aabe1 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 8cddcfce846f506e2b6379f7a58e0d484f48ba4f..c9835be0217d3f724f93877026a9bb6eb2e0e6c9 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 fa696e60a01b93aca16212827d56da75c849689b..fa357a46c5c7b74d3c4e4dd29dfb04881ad5156c 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 d12615f852ab51a74a5238f1285d2c7770a2db5e..50c1b48a9912bb397875fd555ff3de28eff29ce7 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() }