From e6050d60f8d9657b8d293fb2bb58fa6f6528377d Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Wed, 1 Nov 2023 16:08:31 +0200 Subject: [PATCH] Change callbacks to suspended --- .../ActiveSessionsDataSource.kt | 11 +++------- .../cross_signing/CrossSigningDataSource.kt | 11 +++++----- .../pass_phrase/EncryptionAlgorithmHelper.kt | 7 ++++--- .../create/CreatePassPhraseDataSource.kt | 20 ++++++++----------- 4 files changed, 20 insertions(+), 29 deletions(-) diff --git a/auth/src/main/java/org/futo/circles/auth/feature/active_sessions/ActiveSessionsDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/active_sessions/ActiveSessionsDataSource.kt index 7be37c849..f2ab8ff52 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/active_sessions/ActiveSessionsDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/active_sessions/ActiveSessionsDataSource.kt @@ -20,7 +20,6 @@ import org.futo.circles.core.extensions.createResult import org.futo.circles.core.provider.MatrixSessionProvider import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo -import org.matrix.android.sdk.api.util.awaitCallback import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -94,16 +93,12 @@ class ActiveSessionsDataSource @Inject constructor( } suspend fun removeSession(deviceId: String): Response<Unit> = createResult { - awaitCallback { - session.cryptoService().deleteDevice(deviceId, authConfirmationProvider, it) - } + session.cryptoService().deleteDevice(deviceId, authConfirmationProvider) } suspend fun resetKeysToEnableCrossSigning(): Response<Unit> = createResult { - awaitCallback { - session.cryptoService().crossSigningService() - .initializeCrossSigning(authConfirmationProvider, it) - } + session.cryptoService().crossSigningService() + .initializeCrossSigning(authConfirmationProvider) } private fun isSessionInactive(lastSeenTsMillis: Long?): Boolean = diff --git a/auth/src/main/java/org/futo/circles/auth/feature/cross_signing/CrossSigningDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/cross_signing/CrossSigningDataSource.kt index 1b3595b4b..e50349a05 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/cross_signing/CrossSigningDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/cross_signing/CrossSigningDataSource.kt @@ -1,6 +1,7 @@ package org.futo.circles.auth.feature.cross_signing import org.futo.circles.core.provider.MatrixSessionProvider +import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME import org.matrix.android.sdk.api.session.crypto.crosssigning.SELF_SIGNING_KEY_SSSS_NAME @@ -9,7 +10,6 @@ import org.matrix.android.sdk.api.session.crypto.crosssigning.isVerified import org.matrix.android.sdk.api.session.securestorage.KeyInfoResult import org.matrix.android.sdk.api.session.securestorage.KeyRef import org.matrix.android.sdk.api.session.securestorage.SsssKeySpec -import org.matrix.android.sdk.api.util.awaitCallback import javax.inject.Inject class CrossSigningDataSource @Inject constructor() { @@ -20,7 +20,7 @@ class CrossSigningDataSource @Inject constructor() { try { session.sharedSecretStorageService().getSecret(MASTER_KEY_SSSS_NAME, null, keySpec) } catch (ignore: Throwable) { - awaitCallback { crossSigningService.initializeCrossSigning(null, it) } + tryOrNull { crossSigningService.initializeCrossSigning(null) } storeKeys(session, keySpec) } } @@ -45,10 +45,9 @@ class CrossSigningDataSource @Inject constructor() { mskPrivateKey, uskPrivateKey, sskPrivateKey ) if (trustResult.isVerified()) { - awaitCallback { - session.sessionParams.deviceId?.let { deviceId -> - session.cryptoService().crossSigningService().trustDevice(deviceId, it) - } + tryOrNull { + session.cryptoService().crossSigningService() + .trustDevice(session.sessionParams.deviceId) } } } diff --git a/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/EncryptionAlgorithmHelper.kt b/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/EncryptionAlgorithmHelper.kt index 6b062a606..aec682019 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/EncryptionAlgorithmHelper.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/EncryptionAlgorithmHelper.kt @@ -3,6 +3,7 @@ package org.futo.circles.auth.feature.pass_phrase import org.futo.circles.core.provider.MatrixSessionProvider import org.matrix.android.sdk.api.crypto.BCRYPT_ALGORITHM_BACKUP import org.matrix.android.sdk.api.crypto.BSSPEKE_ALGORITHM_BACKUP +import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult import org.matrix.android.sdk.api.session.securestorage.KeyInfoResult import org.matrix.android.sdk.api.util.awaitCallback @@ -21,10 +22,10 @@ class EncryptionAlgorithmHelper @Inject constructor() { } private suspend fun getEncryptionAlgorithm(): String? { - val keyVersion = awaitCallback { + val keyVersion = tryOrNull { MatrixSessionProvider.currentSession?.cryptoService()?.keysBackupService() - ?.getCurrentVersion(it) - }.toKeysVersionResult() + ?.getCurrentVersion() + }?.toKeysVersionResult() return keyVersion?.algorithm } diff --git a/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/create/CreatePassPhraseDataSource.kt b/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/create/CreatePassPhraseDataSource.kt index 145a87cc5..9dc6c754b 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/create/CreatePassPhraseDataSource.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/pass_phrase/create/CreatePassPhraseDataSource.kt @@ -8,10 +8,9 @@ import org.futo.circles.auth.feature.cross_signing.CrossSigningDataSource import org.futo.circles.auth.feature.pass_phrase.restore.SSSSDataSource import org.futo.circles.core.model.LoadingData import org.futo.circles.core.provider.MatrixSessionProvider -import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysVersion +import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.session.crypto.keysbackup.MegolmBackupCreationInfo import org.matrix.android.sdk.api.session.crypto.keysbackup.toKeysVersionResult -import org.matrix.android.sdk.api.util.awaitCallback import java.security.SecureRandom import javax.inject.Inject @@ -29,9 +28,8 @@ class CreatePassPhraseDataSource @Inject constructor( suspend fun createPassPhraseBackup() { loadingLiveData.postValue(LoadingData(messageId = R.string.generating_recovery_key)) val keyBackupPrivateKey = generateRandomPrivateKey() - val backupCreationInfo = awaitCallback { - keysBackupService.prepareKeysBackupVersion(keyBackupPrivateKey, it) - } + val backupCreationInfo = + keysBackupService.prepareKeysBackupVersion(keyBackupPrivateKey, null) createKeyBackup(backupCreationInfo) val keyData = ssssDataSource.storeBsSpekeKeyIntoSSSS(keyBackupPrivateKey) crossSigningDataSource.initCrossSigningIfNeed(keyData.keySpec) @@ -61,21 +59,19 @@ class CreatePassPhraseDataSource @Inject constructor( loadingLiveData.postValue(LoadingData(messageId = R.string.creating_backup)) val versionData = getCurrentBackupVersion() - if (versionData?.version.isNullOrBlank()) { - awaitCallback<KeysVersion> { - keysBackupService.createKeysBackupVersion(backupCreationInfo, it) - } - } else throw Exception(context.getString(R.string.backup_already_exist)) + if (versionData?.version.isNullOrBlank()) + keysBackupService.createKeysBackupVersion(backupCreationInfo) + else throw Exception(context.getString(R.string.backup_already_exist)) } private suspend fun removeCurrentBackupIfExist() { loadingLiveData.postValue(LoadingData(messageId = R.string.removing_backup)) getCurrentBackupVersion()?.version?.let { version -> - awaitCallback { keysBackupService.deleteBackup(version, it) } + keysBackupService.deleteBackup(version) } } private suspend fun getCurrentBackupVersion() = - awaitCallback { keysBackupService.getCurrentVersion(it) }.toKeysVersionResult() + tryOrNull { keysBackupService.getCurrentVersion() }?.toKeysVersionResult() } -- GitLab