From fb8ba32fb45fff73484be9e55047c3272d9d36b4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 5 Dec 2019 09:46:36 +0100 Subject: [PATCH 1/4] Version++ --- CHANGES.md | 21 +++++++++++++++++++++ vector/build.gradle | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 472c56648a..553091bd67 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,24 @@ +Changes in RiotX 0.10.0 (2019-XX-XX) +=================================================== + +Features ✨: + - + +Improvements 🙌: + - + +Other changes: + - + +Bugfix 🐛: + - + +Translations 🗣: + - + +Build 🧱: + - + Changes in RiotX 0.9.0 (2019-12-05) =================================================== diff --git a/vector/build.gradle b/vector/build.gradle index d77f669215..d7f4a8b453 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -15,7 +15,7 @@ androidExtensions { } ext.versionMajor = 0 -ext.versionMinor = 9 +ext.versionMinor = 10 ext.versionPatch = 0 static def getGitTimestamp() { From aa9d66b99114f5d24e1fcfbc7d585a0111fd8f0a Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 5 Dec 2019 17:14:38 +0100 Subject: [PATCH 2/4] Allow returning a value from an async transaction --- .../matrix/android/internal/database/AsyncTransaction.kt | 6 ++++-- .../internal/session/filter/DefaultFilterRepository.kt | 4 ++-- .../java/im/vector/matrix/android/internal/util/Monarchy.kt | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/AsyncTransaction.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/AsyncTransaction.kt index 0f8445d20f..4075f95ae8 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/AsyncTransaction.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/AsyncTransaction.kt @@ -22,12 +22,13 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.withContext import timber.log.Timber -suspend fun awaitTransaction(config: RealmConfiguration, transaction: suspend (realm: Realm) -> Unit) = withContext(Dispatchers.Default) { +suspend fun awaitTransaction(config: RealmConfiguration, transaction: suspend (realm: Realm) -> T) = withContext(Dispatchers.Default) { Realm.getInstance(config).use { bgRealm -> bgRealm.beginTransaction() + val result: T try { val start = System.currentTimeMillis() - transaction(bgRealm) + result = transaction(bgRealm) if (isActive) { bgRealm.commitTransaction() val end = System.currentTimeMillis() @@ -39,5 +40,6 @@ suspend fun awaitTransaction(config: RealmConfiguration, transaction: suspend (r bgRealm.cancelTransaction() } } + result } } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/filter/DefaultFilterRepository.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/filter/DefaultFilterRepository.kt index ae8e8ce891..f7df8c512e 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/filter/DefaultFilterRepository.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/filter/DefaultFilterRepository.kt @@ -69,7 +69,7 @@ internal class DefaultFilterRepository @Inject constructor(private val monarchy: } override suspend fun getFilter(): String { - return Realm.getInstance(monarchy.realmConfiguration).use { + return monarchy.awaitTransaction { val filter = FilterEntity.getOrCreate(it) if (filter.filterId.isBlank()) { // Use the Json format @@ -82,7 +82,7 @@ internal class DefaultFilterRepository @Inject constructor(private val monarchy: } override suspend fun getRoomFilter(): String { - return Realm.getInstance(monarchy.realmConfiguration).use { + return monarchy.awaitTransaction { FilterEntity.getOrCreate(it).roomEventFilterJson } } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/util/Monarchy.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/util/Monarchy.kt index fc9999225f..848cc43565 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/util/Monarchy.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/util/Monarchy.kt @@ -22,8 +22,8 @@ import io.realm.Realm import io.realm.RealmModel import java.util.concurrent.atomic.AtomicReference -internal suspend fun Monarchy.awaitTransaction(transaction: suspend (realm: Realm) -> Unit) { - awaitTransaction(realmConfiguration, transaction) +internal suspend fun Monarchy.awaitTransaction(transaction: suspend (realm: Realm) -> T): T { + return awaitTransaction(realmConfiguration, transaction) } fun Monarchy.fetchCopied(query: (Realm) -> T?): T? { From eb9775e307da3c1687a7f5d1a0e679e13bdbfed2 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 5 Dec 2019 17:14:56 +0100 Subject: [PATCH 3/4] Fix some crypto realm issues --- .../android/internal/crypto/store/db/RealmCryptoStore.kt | 3 ++- .../crypto/store/db/model/OutgoingRoomKeyRequestEntity.kt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStore.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStore.kt index 8a3b66dfe5..c194a400ce 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStore.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStore.kt @@ -643,9 +643,10 @@ internal class RealmCryptoStore(private val realmConfiguration: RealmConfigurati } override fun getOutgoingRoomKeyRequestByState(states: Set): OutgoingRoomKeyRequest? { + val statesIndex = states.map { it.ordinal }.toTypedArray() return doRealmQueryAndCopy(realmConfiguration) { it.where() - .`in`(OutgoingRoomKeyRequestEntityFields.STATE, states.map { it.ordinal }.toTypedArray()) + .`in`(OutgoingRoomKeyRequestEntityFields.STATE, statesIndex) .findFirst() } ?.toOutgoingRoomKeyRequest() diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingRoomKeyRequestEntity.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingRoomKeyRequestEntity.kt index b7bcb603f5..3130bd2f89 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingRoomKeyRequestEntity.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/model/OutgoingRoomKeyRequestEntity.kt @@ -41,6 +41,7 @@ internal open class OutgoingRoomKeyRequestEntity( * Convert to OutgoingRoomKeyRequest */ fun toOutgoingRoomKeyRequest(): OutgoingRoomKeyRequest { + val cancellationTxnId = this.cancellationTxnId return OutgoingRoomKeyRequest( RoomKeyRequestBody().apply { algorithm = requestBodyAlgorithm From 6d8850b3d61978d4a21e6f24a01cd5922956ba08 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 5 Dec 2019 18:17:36 +0100 Subject: [PATCH 4/4] Prepare version 0.9.1 --- CHANGES.md | 19 ++----------------- vector/build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 553091bd67..9b4e022d5e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,23 +1,8 @@ -Changes in RiotX 0.10.0 (2019-XX-XX) +Changes in RiotX 0.9.1 (2019-12-05) =================================================== -Features ✨: - - - -Improvements 🙌: - - - -Other changes: - - - Bugfix 🐛: - - - -Translations 🗣: - - - -Build 🧱: - - + - Fix an issue with DB transaction (#740) Changes in RiotX 0.9.0 (2019-12-05) =================================================== diff --git a/vector/build.gradle b/vector/build.gradle index d7f4a8b453..55625d4466 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -15,8 +15,8 @@ androidExtensions { } ext.versionMajor = 0 -ext.versionMinor = 10 -ext.versionPatch = 0 +ext.versionMinor = 9 +ext.versionPatch = 1 static def getGitTimestamp() { def cmd = 'git show -s --format=%ct'