From 30be44077490f19262cacfa05d06577343d812fe Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 8 Feb 2021 12:37:38 +0100 Subject: [PATCH] Sugar: defined extensions fo deleteOnCascade() methods, as they have to be called in a transaction --- .../store/db/model/CrossSigningInfoEntity.kt | 10 +++++----- .../crypto/store/db/model/DeviceInfoEntity.kt | 10 +++++----- .../crypto/store/db/model/KeyInfoEntity.kt | 9 ++++----- .../crypto/store/db/model/UserEntity.kt | 12 +++++------ .../internal/database/model/ChunkEntity.kt | 18 ++++++++--------- .../model/EventAnnotationsSummaryEntity.kt | 16 +++++++-------- .../internal/database/model/PushRuleEntity.kt | 10 +++++----- .../database/model/PushRulesEntity.kt | 10 +++++----- .../internal/database/model/PusherEntity.kt | 10 +++++----- .../model/ReadReceiptsSummaryEntity.kt | 10 +++++----- .../database/model/TimelineEventEntity.kt | 20 +++++++++---------- 11 files changed, 67 insertions(+), 68 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CrossSigningInfoEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CrossSigningInfoEntity.kt index 2d91c32d90..8599c972e9 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CrossSigningInfoEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CrossSigningInfoEntity.kt @@ -30,11 +30,6 @@ internal open class CrossSigningInfoEntity( companion object - fun deleteOnCascade() { - crossSigningKeys.clearWith { it.deleteOnCascade() } - deleteFromRealm() - } - fun getMasterKey() = crossSigningKeys.firstOrNull { it.usages.contains(KeyUsage.MASTER.value) } fun setMasterKey(info: KeyInfoEntity?) { @@ -62,3 +57,8 @@ internal open class CrossSigningInfoEntity( info?.let { crossSigningKeys.add(it) } } } + +internal fun CrossSigningInfoEntity.deleteOnCascade() { + crossSigningKeys.clearWith { it.deleteOnCascade() } + deleteFromRealm() +} diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/DeviceInfoEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/DeviceInfoEntity.kt index eddf0b81c6..61870ec486 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/DeviceInfoEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/DeviceInfoEntity.kt @@ -46,9 +46,9 @@ internal open class DeviceInfoEntity( val users: RealmResults? = null companion object - - fun deleteOnCascade() { - trustLevelEntity?.deleteFromRealm() - deleteFromRealm() - } +} + +internal fun DeviceInfoEntity.deleteOnCascade() { + trustLevelEntity?.deleteFromRealm() + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeyInfoEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeyInfoEntity.kt index 527adaf847..9133413589 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeyInfoEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeyInfoEntity.kt @@ -29,10 +29,9 @@ internal open class KeyInfoEntity( */ var signatures: String? = null, var trustLevelEntity: TrustLevelEntity? = null -) : RealmObject() { +) : RealmObject() - fun deleteOnCascade() { - trustLevelEntity?.deleteFromRealm() - deleteFromRealm() - } +internal fun KeyInfoEntity.deleteOnCascade() { + trustLevelEntity?.deleteFromRealm() + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/UserEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/UserEntity.kt index a815efd8cb..df9482bf96 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/UserEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/UserEntity.kt @@ -29,10 +29,10 @@ internal open class UserEntity( ) : RealmObject() { companion object - - fun deleteOnCascade() { - devices.clearWith { it.deleteOnCascade() } - crossSigningInfoEntity?.deleteOnCascade() - deleteFromRealm() - } +} + +internal fun UserEntity.deleteOnCascade() { + devices.clearWith { it.deleteOnCascade() } + crossSigningInfoEntity?.deleteOnCascade() + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/ChunkEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/ChunkEntity.kt index 567cb3ca32..68533a3c19 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/ChunkEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/ChunkEntity.kt @@ -44,13 +44,13 @@ internal open class ChunkEntity(@Index var prevToken: String? = null, val room: RealmResults? = null companion object - - fun deleteOnCascade(deleteStateEvents: Boolean, canDeleteRoot: Boolean) { - assertIsManaged() - if (deleteStateEvents) { - stateEvents.deleteAllFromRealm() - } - timelineEvents.clearWith { it.deleteOnCascade(canDeleteRoot) } - deleteFromRealm() - } +} + +internal fun ChunkEntity.deleteOnCascade(deleteStateEvents: Boolean, canDeleteRoot: Boolean) { + assertIsManaged() + if (deleteStateEvents) { + stateEvents.deleteAllFromRealm() + } + timelineEvents.clearWith { it.deleteOnCascade(canDeleteRoot) } + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/EventAnnotationsSummaryEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/EventAnnotationsSummaryEntity.kt index 4caf6bdd0d..33f26d439f 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/EventAnnotationsSummaryEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/EventAnnotationsSummaryEntity.kt @@ -30,12 +30,12 @@ internal open class EventAnnotationsSummaryEntity( ) : RealmObject() { companion object - - fun deleteOnCascade() { - reactionsSummary.deleteAllFromRealm() - editSummary?.deleteFromRealm() - referencesSummaryEntity?.deleteFromRealm() - pollResponseSummary?.deleteFromRealm() - deleteFromRealm() - } +} + +internal fun EventAnnotationsSummaryEntity.deleteOnCascade() { + reactionsSummary.deleteAllFromRealm() + editSummary?.deleteFromRealm() + referencesSummaryEntity?.deleteFromRealm() + pollResponseSummary?.deleteFromRealm() + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PushRuleEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PushRuleEntity.kt index cf824ba85d..5bfe2833f8 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PushRuleEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PushRuleEntity.kt @@ -39,9 +39,9 @@ internal open class PushRuleEntity( val parent: RealmResults? = null companion object - - fun deleteOnCascade() { - conditions?.deleteAllFromRealm() - deleteFromRealm() - } +} + +internal fun PushRuleEntity.deleteOnCascade() { + conditions?.deleteAllFromRealm() + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PushRulesEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PushRulesEntity.kt index 3728856663..571bc71c27 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PushRulesEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PushRulesEntity.kt @@ -35,9 +35,9 @@ internal open class PushRulesEntity( } companion object - - fun deleteOnCascade() { - pushRules.clearWith { it.deleteOnCascade() } - deleteFromRealm() - } +} + +internal fun PushRulesEntity.deleteOnCascade() { + pushRules.clearWith { it.deleteOnCascade() } + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PusherEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PusherEntity.kt index e4fb474599..af8e4f2d37 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PusherEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/PusherEntity.kt @@ -53,9 +53,9 @@ internal open class PusherEntity( } companion object - - fun deleteOnCascade() { - data?.deleteFromRealm() - deleteFromRealm() - } +} + +internal fun PusherEntity.deleteOnCascade() { + data?.deleteFromRealm() + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/ReadReceiptsSummaryEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/ReadReceiptsSummaryEntity.kt index a3693720e4..9ca4adc33e 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/ReadReceiptsSummaryEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/ReadReceiptsSummaryEntity.kt @@ -33,9 +33,9 @@ internal open class ReadReceiptsSummaryEntity( val timelineEvent: RealmResults? = null companion object - - fun deleteOnCascade() { - readReceipts.deleteAllFromRealm() - deleteFromRealm() - } +} + +internal fun ReadReceiptsSummaryEntity.deleteOnCascade() { + readReceipts.deleteAllFromRealm() + deleteFromRealm() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/TimelineEventEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/TimelineEventEntity.kt index fbafb9c5eb..30bbde70c2 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/TimelineEventEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/TimelineEventEntity.kt @@ -39,14 +39,14 @@ internal open class TimelineEventEntity(var localId: Long = 0, val chunk: RealmResults? = null companion object - - fun deleteOnCascade(canDeleteRoot: Boolean) { - assertIsManaged() - if (canDeleteRoot) { - root?.deleteFromRealm() - } - annotations?.deleteOnCascade() - readReceipts?.deleteOnCascade() - deleteFromRealm() - } +} + +internal fun TimelineEventEntity.deleteOnCascade(canDeleteRoot: Boolean) { + assertIsManaged() + if (canDeleteRoot) { + root?.deleteFromRealm() + } + annotations?.deleteOnCascade() + readReceipts?.deleteOnCascade() + deleteFromRealm() }