diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt index d6a47dee0a..857424926a 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt @@ -150,6 +150,7 @@ internal class DefaultCryptoService @Inject constructor( private val isStarting = AtomicBoolean(false) private val isStarted = AtomicBoolean(false) private var olmMachine: OlmMachine? = null + private val deviceObserver: DeviceUpdateObserver = DeviceUpdateObserver() suspend fun onStateEvent(roomId: String, event: Event) { when (event.getClearType()) { @@ -320,7 +321,7 @@ internal class DefaultCryptoService @Inject constructor( try { setRustLogger() - olmMachine = OlmMachine(userId, deviceId!!, dataDir) + olmMachine = OlmMachine(userId, deviceId!!, dataDir, deviceObserver) Timber.v("HELLLO WORLD STARTING $dataDir CRYPTO ${olmMachine?.identityKeys()}") } catch (throwable: Throwable) { @@ -393,14 +394,8 @@ internal class DefaultCryptoService @Inject constructor( */ override fun getDeviceInfo(userId: String, deviceId: String?): CryptoDeviceInfo? { return if (userId.isNotEmpty() && !deviceId.isNullOrEmpty()) { - val device = runBlocking { - olmMachine!!.getDevice(userId, deviceId) - } - - if (device != null) { - device.toCryptoDeviceInfo() - } else { - null + runBlocking { + olmMachine?.getDevice(userId, deviceId)?.toCryptoDeviceInfo() } } else { null @@ -409,7 +404,7 @@ internal class DefaultCryptoService @Inject constructor( override fun getCryptoDeviceInfo(userId: String): List { return runBlocking { - olmMachine!!.getUserDevices(userId) + olmMachine?.getUserDevices(userId) ?: listOf() } } @@ -419,7 +414,7 @@ internal class DefaultCryptoService @Inject constructor( override fun getLiveCryptoDeviceInfo(userIds: List): LiveData> { return runBlocking { - olmMachine!!.getLiveDevices(userIds) + olmMachine?.getLiveDevices(userIds) ?: LiveDevice(userIds, deviceObserver) } } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/OlmMachine.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/OlmMachine.kt index 646ce03046..44a0434f77 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/OlmMachine.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/OlmMachine.kt @@ -70,10 +70,6 @@ internal class LiveDevice( var userIds: List = userIds private var observer: DeviceUpdateObserver = observer - private val listener = { devices: List -> - value = devices - } - override fun onActive() { observer.addDeviceUpdateListener(this) } @@ -140,9 +136,9 @@ internal class DeviceUpdateObserver() { } } -internal class OlmMachine(user_id: String, device_id: String, path: File) { +internal class OlmMachine(user_id: String, device_id: String, path: File, deviceObserver: DeviceUpdateObserver) { private val inner: InnerMachine = InnerMachine(user_id, device_id, path.toString()) - private val deviceUpdateObserver = DeviceUpdateObserver() + private val deviceUpdateObserver = deviceObserver /** * Get our own user ID.