Skip to content
Snippets Groups Projects
Commit 4aa67918 authored by Kamal Bramwell's avatar Kamal Bramwell
Browse files

Fixed bug preventing backups after restoring a Crust account

Username is now cached in UD by calling StoreUsername
parent cd1107ac
No related branches found
No related tags found
No related merge requests found
......@@ -30,7 +30,7 @@ class BindingsBackupMediator @Inject constructor(
private val restoreHandler =
BindingsRestoreHandler(preferences, daoRepo, messageReceivedListener, backupHandler)
override val crustApi = BindingsCrustMediator()
override val crustApi = BindingsCrustMediator(username = preferences.name)
override fun initializeCrustIntegration(
userDiscovery: UserDiscovery,
......
......@@ -86,6 +86,7 @@ class Crust private constructor(
}
private suspend fun fetchData() {
cachedBackupData = crustApi.recoverBackup(username ?: preferences.name).getOrNull()?.let {
AccountArchive(it)
}?.also {
......
......@@ -2,6 +2,7 @@ package io.xxlabs.messenger.backup.cloud.crust
import bindings.Bindings
import bindings.UserDiscovery
import timber.log.Timber
interface CrustDataSource {
suspend fun uploadBackup(path: String): Result<ByteArray>
......@@ -10,11 +11,13 @@ interface CrustDataSource {
class BindingsCrustMediator(
var udManager: UserDiscovery? = null,
var receptionRsaPrivateKey: ByteArray = byteArrayOf()
var receptionRsaPrivateKey: ByteArray = byteArrayOf(),
val username: String? = null
) : CrustDataSource {
override suspend fun uploadBackup(path: String): Result<ByteArray> {
return try {
updateUsernameCache()
udManager?.let {
val uploadSuccessReport = Bindings.uploadBackup(path, udManager, receptionRsaPrivateKey)
Result.success(uploadSuccessReport)
......@@ -24,6 +27,19 @@ class BindingsCrustMediator(
}
}
private fun updateUsernameCache() {
udManager?.run {
try {
if (username.isNotBlank()) {
storeUsername(username)
Timber.d("Successfully cached username '$username' in UserDiscovery.")
}
} catch (e: Exception) {
Timber.d("Failed to cache username '$username' in UserDiscovery")
}
}
}
override suspend fun recoverBackup(username: String): Result<ByteArray> {
return try {
val backupData = Bindings.recoverBackup(username)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment