diff --git a/data/src/main/java/manager/KeyManagerImpl.kt b/data/src/main/java/manager/KeyManagerImpl.kt index a62a2851b..3ec85f3ed 100644 --- a/data/src/main/java/manager/KeyManagerImpl.kt +++ b/data/src/main/java/manager/KeyManagerImpl.kt @@ -26,18 +26,14 @@ import javax.inject.Singleton @Singleton class KeyManagerImpl @Inject constructor() : KeyManager { - private var maxValue: Long = 0L - - init { - val realm = Realm.getDefaultInstance() - maxValue = realm.where(Message::class.java).max("id")?.toLong() ?: 0L - realm.close() - } + private var initialized = false + private var maxValue: Long = 0 /** * Should be called when a new sync is being started */ override fun reset() { + initialized = true maxValue = 0L } @@ -45,6 +41,13 @@ class KeyManagerImpl @Inject constructor() : KeyManager { * Returns a valid ID that can be used to store a new message */ override fun newId(): Long { + if (!initialized) { + maxValue = Realm.getDefaultInstance().use { realm -> + realm.where(Message::class.java).max("id")?.toLong() ?: 0L + } + initialized = true + } + maxValue++ return maxValue }