From 462d1bce68745a0857f062a1ac95838115bffc6e Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 5 Aug 2022 19:16:53 +0200 Subject: [PATCH] Realm crypto: migrate entity classes --- .../crypto/store/db/model/AuditTrailEntity.kt | 16 +++-- .../store/db/model/CrossSigningInfoEntity.kt | 23 ++++--- .../store/db/model/CryptoMetadataEntity.kt | 62 ++++++++++--------- .../crypto/store/db/model/CryptoRoomEntity.kt | 39 ++++++------ .../crypto/store/db/model/DeviceInfoEntity.kt | 50 +++++++-------- .../crypto/store/db/model/KeyInfoEntity.kt | 35 ++++++----- .../store/db/model/KeyRequestReplyEntity.kt | 14 ++--- .../store/db/model/KeysBackupDataEntity.kt | 26 ++++---- .../db/model/MyDeviceLastSeenInfoEntity.kt | 28 ++++----- .../db/model/OlmInboundGroupSessionEntity.kt | 49 +++++++-------- .../crypto/store/db/model/OlmSessionEntity.kt | 20 +++--- .../model/OutboundGroupSessionInfoEntity.kt | 13 ++-- .../db/model/OutgoingKeyRequestEntity.kt | 43 ++++++------- .../store/db/model/SharedSessionEntity.kt | 23 +++---- .../crypto/store/db/model/TrustLevelEntity.kt | 11 ++-- .../crypto/store/db/model/UserEntity.kt | 25 ++++---- .../store/db/model/WithHeldSessionEntity.kt | 21 +++---- 17 files changed, 237 insertions(+), 261 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/AuditTrailEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/AuditTrailEntity.kt index e2e665e7f7..eb413fe447 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/AuditTrailEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/AuditTrailEntity.kt @@ -16,15 +16,13 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.Index -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.Index + +internal class AuditTrailEntity : RealmObject { + var ageLocalTs: Long? = null + @Index var type: String? = null + var contentJson: String? = null -@RealmClass -internal open class AuditTrailEntity( - var ageLocalTs: Long? = null, - @Index var type: String? = null, - var contentJson: String? = null -) : RealmModel { companion object } 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 ba2c631d87..55a0b4b422 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 @@ -16,20 +16,16 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmList -import io.realm.RealmModel -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass -import io.realm.kotlin.deleteFromRealm +import io.realm.kotlin.ext.realmListOf +import io.realm.kotlin.types.RealmList +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey import org.matrix.android.sdk.api.session.crypto.crosssigning.KeyUsage -import org.matrix.android.sdk.internal.extensions.clearWith -@RealmClass -internal open class CrossSigningInfoEntity( - @PrimaryKey - var userId: String? = null, - var crossSigningKeys: RealmList = RealmList() -) : RealmModel { +internal class CrossSigningInfoEntity : RealmObject { + @PrimaryKey + var userId: String? = null + var crossSigningKeys: RealmList = realmListOf() companion object @@ -61,7 +57,10 @@ internal open class CrossSigningInfoEntity( } } +/* 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/CryptoMetadataEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CryptoMetadataEntity.kt index 9e07b2222b..bb62a10f59 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CryptoMetadataEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CryptoMetadataEntity.kt @@ -16,46 +16,48 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey import org.matrix.android.sdk.internal.crypto.store.db.deserializeFromRealm import org.matrix.android.sdk.internal.crypto.store.db.serializeForRealm import org.matrix.olm.OlmAccount -@RealmClass -internal open class CryptoMetadataEntity( - // The current user id. - @PrimaryKey var userId: String? = null, - // The current device id. - var deviceId: String? = null, - // Serialized OlmAccount - var olmAccountData: String? = null, - // The sync token corresponding to the device list. // TODO? - var deviceSyncToken: String? = null, - // Settings for blacklisting unverified devices. - var globalBlacklistUnverifiedDevices: Boolean = false, - // setting to enable or disable key gossiping - var globalEnableKeyGossiping: Boolean = true, +internal class CryptoMetadataEntity : RealmObject { + // The current user id. + @PrimaryKey var userId: String? = null - // MSC3061: Sharing room keys for past messages - // If set to true key history will be shared to invited users with respect to room setting - var enableKeyForwardingOnInvite: Boolean = false, + // The current device id. + var deviceId: String? = null - // The keys backup version currently used. Null means no backup. - var backupVersion: String? = null, + // Serialized OlmAccount + var olmAccountData: String? = null - // The device keys has been sent to the homeserver - var deviceKeysSentToServer: Boolean = false, + // The sync token corresponding to the device list. // TODO? + var deviceSyncToken: String? = null - var xSignMasterPrivateKey: String? = null, - var xSignUserPrivateKey: String? = null, - var xSignSelfSignedPrivateKey: String? = null, - var keyBackupRecoveryKey: String? = null, - var keyBackupRecoveryKeyVersion: String? = null + // Settings for blacklisting unverified devices. + var globalBlacklistUnverifiedDevices: Boolean = false + + // setting to enable or disable key gossiping + var globalEnableKeyGossiping: Boolean = true + + // MSC3061: Sharing room keys for past messages + // If set to true key history will be shared to invited users with respect to room setting + var enableKeyForwardingOnInvite: Boolean = false + + // The keys backup version currently used. Null means no backup. + var backupVersion: String? = null + + // The device keys has been sent to the homeserver + var deviceKeysSentToServer: Boolean = false + + var xSignMasterPrivateKey: String? = null + var xSignUserPrivateKey: String? = null + var xSignSelfSignedPrivateKey: String? = null + var keyBackupRecoveryKey: String? = null + var keyBackupRecoveryKeyVersion: String? = null // var crossSigningInfoEntity: CrossSigningInfoEntity? = null -) : RealmModel { // Deserialize data fun getOlmAccount(): OlmAccount? { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CryptoRoomEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CryptoRoomEntity.kt index 5ec04e1767..57cc7e018f 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CryptoRoomEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/CryptoRoomEntity.kt @@ -16,27 +16,26 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey -@RealmClass -internal open class CryptoRoomEntity( - @PrimaryKey var roomId: String? = null, - var algorithm: String? = null, - var shouldEncryptForInvitedMembers: Boolean? = null, - var blacklistUnverifiedDevices: Boolean = false, - // Determines whether or not room history should be shared on new member invites - var shouldShareHistory: Boolean = false, - // Store the current outbound session for this room, - // to avoid re-create and re-share at each startup (if rotation not needed..) - // This is specific to megolm but not sure how to model it better - var outboundSessionInfo: OutboundGroupSessionInfoEntity? = null, - // a security to ensure that a room will never revert to not encrypted - // even if a new state event with empty encryption, or state is reset somehow - var wasEncryptedOnce: Boolean? = false -) : - RealmModel { +internal class CryptoRoomEntity : RealmObject { + @PrimaryKey var roomId: String? = null + var algorithm: String? = null + var shouldEncryptForInvitedMembers: Boolean? = null + var blacklistUnverifiedDevices: Boolean = false + + // Determines whether or not room history should be shared on new member invites + var shouldShareHistory: Boolean = false + + // Store the current outbound session for this room, + // to avoid re-create and re-share at each startup (if rotation not needed..) + // This is specific to megolm but not sure how to model it better + var outboundSessionInfo: OutboundGroupSessionInfoEntity? = null + + // a security to ensure that a room will never revert to not encrypted + // even if a new state event with empty encryption, or state is reset somehow + var wasEncryptedOnce: Boolean? = false companion object } 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 6e078fc5bc..d20cac7300 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 @@ -16,42 +16,38 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.RealmResults -import io.realm.annotations.LinkingObjects -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass -import io.realm.kotlin.deleteFromRealm +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey internal fun DeviceInfoEntity.Companion.createPrimaryKey(userId: String, deviceId: String) = "$userId|$deviceId" -@RealmClass -internal open class DeviceInfoEntity( - @PrimaryKey var primaryKey: String = "", - var deviceId: String? = null, - var identityKey: String? = null, - var userId: String? = null, - var isBlocked: Boolean? = null, - var algorithmListJson: String? = null, - var keysMapJson: String? = null, - var signatureMapJson: String? = null, - // Will contain the device name from unsigned data if present - var unsignedMapJson: String? = null, - var trustLevelEntity: TrustLevelEntity? = null, - /** - * We use that to make distinction between old devices (there before mine) - * and new ones. Used for example to detect new unverified login - */ - var firstTimeSeenLocalTs: Long? = null -) : RealmModel { +internal class DeviceInfoEntity : RealmObject { + @PrimaryKey var primaryKey: String = "" + var deviceId: String? = null + var identityKey: String? = null + var userId: String? = null + var isBlocked: Boolean? = null + var algorithmListJson: String? = null + var keysMapJson: String? = null + var signatureMapJson: String? = null - @LinkingObjects("devices") - val users: RealmResults? = null + // Will contain the device name from unsigned data if present + var unsignedMapJson: String? = null + var trustLevelEntity: TrustLevelEntity? = null + + /** + * We use that to make distinction between old devices (there before mine) + * and new ones. Used for example to detect new unverified login + */ + var firstTimeSeenLocalTs: Long? = null companion object } +/* 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 4656e1aaa7..89063c7f05 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 @@ -16,25 +16,28 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmList -import io.realm.RealmModel -import io.realm.annotations.RealmClass -import io.realm.kotlin.deleteFromRealm +import io.realm.kotlin.ext.realmListOf +import io.realm.kotlin.types.RealmList +import io.realm.kotlin.types.RealmObject -@RealmClass -internal open class KeyInfoEntity( - var publicKeyBase64: String? = null, -// var isTrusted: Boolean = false, - var usages: RealmList = RealmList(), - /** - * The signature of this MXDeviceInfo. - * A map from "" to a map from ":" to "" - */ - var signatures: String? = null, - var trustLevelEntity: TrustLevelEntity? = null -) : RealmModel +internal class KeyInfoEntity : RealmObject { + var publicKeyBase64: String? = null + // var isTrusted: Boolean = false, + var usages: RealmList = realmListOf() + + /** + * The signature of this MXDeviceInfo. + * A map from "" to a map from ":" to "" + */ + var signatures: String? = null + var trustLevelEntity: TrustLevelEntity? = null +} + +/* 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/KeyRequestReplyEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeyRequestReplyEntity.kt index 41691b0964..e472e1f2eb 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeyRequestReplyEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeyRequestReplyEntity.kt @@ -16,17 +16,15 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject import org.matrix.android.sdk.api.session.events.model.Event import org.matrix.android.sdk.internal.di.MoshiProvider -@RealmClass -internal open class KeyRequestReplyEntity( - var senderId: String? = null, - var fromDevice: String? = null, - var eventJson: String? = null -) : RealmModel { +internal class KeyRequestReplyEntity : RealmObject { + var senderId: String? = null + var fromDevice: String? = null + var eventJson: String? = null + companion object fun getEvent(): Event? { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeysBackupDataEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeysBackupDataEntity.kt index ad2bcbf11d..a9022646d2 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeysBackupDataEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/KeysBackupDataEntity.kt @@ -16,17 +16,17 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey -@RealmClass -internal open class KeysBackupDataEntity( - // Primary key to update this object. There is only one object, so it's a constant, please do not set it - @PrimaryKey - var primaryKey: Int = 0, - // The last known hash of the backed up keys on the server - var backupLastServerHash: String? = null, - // The last known number of backed up keys on the server - var backupLastServerNumberOfKeys: Int? = null -) : RealmModel +internal class KeysBackupDataEntity : RealmObject { + // Primary key to update this object. There is only one object, so it's a constant, please do not set it + @PrimaryKey + var primaryKey: Int = 0 + + // The last known hash of the backed up keys on the server + var backupLastServerHash: String? = null + + // The last known number of backed up keys on the server + var backupLastServerNumberOfKeys: Int? = null +} diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/MyDeviceLastSeenInfoEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/MyDeviceLastSeenInfoEntity.kt index ccc8aae482..849ab89f0a 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/MyDeviceLastSeenInfoEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/MyDeviceLastSeenInfoEntity.kt @@ -16,21 +16,21 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey -@RealmClass -internal open class MyDeviceLastSeenInfoEntity( - /** The device id. */ - @PrimaryKey var deviceId: String? = null, - /** The device display name. */ - var displayName: String? = null, - /** The last time this device has been seen. */ - var lastSeenTs: Long? = null, - /** The last ip address. */ - var lastSeenIp: String? = null -) : RealmModel { +internal class MyDeviceLastSeenInfoEntity : RealmObject { + /** The device id. */ + @PrimaryKey var deviceId: String? = null + + /** The device display name. */ + var displayName: String? = null + + /** The last time this device has been seen. */ + var lastSeenTs: Long? = null + + /** The last ip address. */ + var lastSeenIp: String? = null companion object } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OlmInboundGroupSessionEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OlmInboundGroupSessionEntity.kt index 91907c7740..a5ad00124e 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OlmInboundGroupSessionEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OlmInboundGroupSessionEntity.kt @@ -16,9 +16,8 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey import org.matrix.android.sdk.internal.crypto.model.InboundGroupSessionData import org.matrix.android.sdk.internal.crypto.model.MXInboundMegolmSessionWrapper import org.matrix.android.sdk.internal.crypto.store.db.deserializeFromRealm @@ -29,34 +28,32 @@ import timber.log.Timber internal fun OlmInboundGroupSessionEntity.Companion.createPrimaryKey(sessionId: String?, senderKey: String?) = "$sessionId|$senderKey" -@RealmClass -internal open class OlmInboundGroupSessionEntity( - // Combined value to build a primary key - @PrimaryKey var primaryKey: String? = null, +internal class OlmInboundGroupSessionEntity : RealmObject { + // Combined value to build a primary key + @PrimaryKey var primaryKey: String? = null - // denormalization for faster querying (these fields are in the inboundGroupSessionDataJson) - var sessionId: String? = null, - var senderKey: String? = null, - var roomId: String? = null, + // denormalization for faster querying (these fields are in the inboundGroupSessionDataJson) + var sessionId: String? = null + var senderKey: String? = null + var roomId: String? = null - // Deprecated, used for migration / olmInboundGroupSessionData contains Json - // keep it in case of problem to have a chance to recover - var olmInboundGroupSessionData: String? = null, + // Deprecated, used for migration / olmInboundGroupSessionData contains Json + // keep it in case of problem to have a chance to recover + var olmInboundGroupSessionData: String? = null - // Stores the session data in an extensible format - // to allow to store data not yet supported for later use - var inboundGroupSessionDataJson: String? = null, + // Stores the session data in an extensible format + // to allow to store data not yet supported for later use + var inboundGroupSessionDataJson: String? = null - // The pickled session - var serializedOlmInboundGroupSession: String? = null, + // The pickled session + var serializedOlmInboundGroupSession: String? = null - // Flag that indicates whether or not the current inboundSession will be shared to - // invited users to decrypt past messages - var sharedHistory: Boolean = false, - // Indicate if the key has been backed up to the homeserver - var backedUp: Boolean = false -) : - RealmModel { + // Flag that indicates whether or not the current inboundSession will be shared to + // invited users to decrypt past messages + var sharedHistory: Boolean = false + + // Indicate if the key has been backed up to the homeserver + var backedUp: Boolean = false fun store(wrapper: MXInboundMegolmSessionWrapper) { this.serializedOlmInboundGroupSession = serializeForRealm(wrapper.session) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OlmSessionEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OlmSessionEntity.kt index b302dc8247..f09c7beec9 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OlmSessionEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OlmSessionEntity.kt @@ -16,9 +16,8 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey import org.matrix.android.sdk.internal.crypto.store.db.deserializeFromRealm import org.matrix.android.sdk.internal.crypto.store.db.serializeForRealm import org.matrix.olm.OlmSession @@ -26,15 +25,12 @@ import org.matrix.olm.OlmSession internal fun OlmSessionEntity.Companion.createPrimaryKey(sessionId: String, deviceKey: String) = "$sessionId|$deviceKey" // olmSessionData is a serialized OlmSession -@RealmClass -internal open class OlmSessionEntity( - @PrimaryKey var primaryKey: String = "", - var sessionId: String? = null, - var deviceKey: String? = null, - var olmSessionData: String? = null, - var lastReceivedMessageTs: Long = 0 -) : - RealmModel { +internal class OlmSessionEntity : RealmObject { + @PrimaryKey var primaryKey: String = "" + var sessionId: String? = null + var deviceKey: String? = null + var olmSessionData: String? = null + var lastReceivedMessageTs: Long = 0 fun getOlmSession(): OlmSession? { return deserializeFromRealm(olmSessionData) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OutboundGroupSessionInfoEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OutboundGroupSessionInfoEntity.kt index c974e0ab42..b4ab15e390 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OutboundGroupSessionInfoEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OutboundGroupSessionInfoEntity.kt @@ -16,19 +16,16 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject import org.matrix.android.sdk.internal.crypto.store.db.deserializeFromRealm import org.matrix.android.sdk.internal.crypto.store.db.serializeForRealm import org.matrix.olm.OlmOutboundGroupSession import timber.log.Timber -@RealmClass -internal open class OutboundGroupSessionInfoEntity( - var serializedOutboundSessionData: String? = null, - var creationTime: Long? = null, - var shouldShareHistory: Boolean = false -) : RealmModel { +internal class OutboundGroupSessionInfoEntity : RealmObject { + var serializedOutboundSessionData: String? = null + var creationTime: Long? = null + var shouldShareHistory: Boolean = false fun getOutboundGroupSession(): OlmOutboundGroupSession? { return try { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OutgoingKeyRequestEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OutgoingKeyRequestEntity.kt index 37f3c06981..aefa1e30af 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OutgoingKeyRequestEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/OutgoingKeyRequestEntity.kt @@ -18,11 +18,11 @@ package org.matrix.android.sdk.internal.crypto.store.db.model import com.squareup.moshi.JsonAdapter import com.squareup.moshi.Types -import io.realm.RealmList -import io.realm.RealmModel -import io.realm.annotations.Index -import io.realm.annotations.RealmClass import io.realm.kotlin.deleteFromRealm +import io.realm.kotlin.ext.realmListOf +import io.realm.kotlin.types.RealmList +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.Index import org.matrix.android.sdk.api.extensions.tryOrNull import org.matrix.android.sdk.api.session.crypto.OutgoingKeyRequest import org.matrix.android.sdk.api.session.crypto.OutgoingRoomKeyRequestState @@ -35,19 +35,17 @@ import org.matrix.android.sdk.api.session.events.model.content.RoomKeyWithHeldCo import org.matrix.android.sdk.api.session.events.model.toModel import org.matrix.android.sdk.internal.di.MoshiProvider -@RealmClass -internal open class OutgoingKeyRequestEntity( - @Index var requestId: String? = null, - var requestedIndex: Int? = null, - var recipientsData: String? = null, - var requestedInfoStr: String? = null, - var creationTimeStamp: Long? = null, - // de-normalization for better query (if not have to query all and parse json) - @Index var roomId: String? = null, - @Index var megolmSessionId: String? = null, +internal class OutgoingKeyRequestEntity : RealmObject { + @Index var requestId: String? = null + var requestedIndex: Int? = null + var recipientsData: String? = null + var requestedInfoStr: String? = null + var creationTimeStamp: Long? = null - var replies: RealmList = RealmList() -) : RealmModel { + // de-normalization for better query (if not have to query all and parse json) + @Index var roomId: String? = null + @Index var megolmSessionId: String? = null + var replies: RealmList = realmListOf() @Index private var requestStateStr: String = OutgoingRoomKeyRequestState.UNSENT.name @@ -87,11 +85,11 @@ internal open class OutgoingKeyRequestEntity( } fun addReply(userId: String, fromDevice: String?, event: Event) { - val newReply = KeyRequestReplyEntity( - senderId = userId, - fromDevice = fromDevice, - eventJson = MoshiProvider.providesMoshi().adapter(Event::class.java).toJson(event) - ) + val newReply = KeyRequestReplyEntity().apply { + this.senderId = userId + this.fromDevice = fromDevice + this.eventJson = MoshiProvider.providesMoshi().adapter(Event::class.java).toJson(event) + } replies.add(newReply) } @@ -133,7 +131,10 @@ internal open class OutgoingKeyRequestEntity( } } +/* internal fun OutgoingKeyRequestEntity.deleteOnCascade() { replies.deleteAllFromRealm() deleteFromRealm() } + + */ diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/SharedSessionEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/SharedSessionEntity.kt index feae7764fc..6eb11960d9 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/SharedSessionEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/SharedSessionEntity.kt @@ -16,25 +16,22 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.Index -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.Index /** * Keep a record of to whom (user/device) a given session should have been shared. * It will be used to reply to keyshare requests from other users, in order to see if * this session was originaly shared with a given user */ -@RealmClass -internal open class SharedSessionEntity( - var roomId: String? = null, - var algorithm: String? = null, - @Index var sessionId: String? = null, - @Index var userId: String? = null, - @Index var deviceId: String? = null, - @Index var deviceIdentityKey: String? = null, - var chainIndex: Int? = null -) : RealmModel { +internal class SharedSessionEntity : RealmObject { + var roomId: String? = null + var algorithm: String? = null + @Index var sessionId: String? = null + @Index var userId: String? = null + @Index var deviceId: String? = null + @Index var deviceIdentityKey: String? = null + var chainIndex: Int? = null companion object } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/TrustLevelEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/TrustLevelEntity.kt index a860db2358..03cfa00764 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/TrustLevelEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/TrustLevelEntity.kt @@ -16,14 +16,11 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject -@RealmClass -internal open class TrustLevelEntity( - var crossSignedVerified: Boolean? = null, - var locallyVerified: Boolean? = null -) : RealmModel { +internal class TrustLevelEntity : RealmObject { + var crossSignedVerified: Boolean? = null + var locallyVerified: Boolean? = null companion object 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 af26a87fef..e57c96e892 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 @@ -16,26 +16,25 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmList -import io.realm.RealmModel -import io.realm.annotations.PrimaryKey -import io.realm.annotations.RealmClass -import io.realm.kotlin.deleteFromRealm -import org.matrix.android.sdk.internal.extensions.clearWith +import io.realm.kotlin.ext.realmListOf +import io.realm.kotlin.types.RealmList +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.PrimaryKey -@RealmClass -internal open class UserEntity( - @PrimaryKey var userId: String? = null, - var devices: RealmList = RealmList(), - var crossSigningInfoEntity: CrossSigningInfoEntity? = null, - var deviceTrackingStatus: Int = 0 -) : RealmModel { +internal class UserEntity : RealmObject { + @PrimaryKey var userId: String? = null + var devices: RealmList = realmListOf() + var crossSigningInfoEntity: CrossSigningInfoEntity? = null + var deviceTrackingStatus: Int = 0 companion object } +/* 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/crypto/store/db/model/WithHeldSessionEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/WithHeldSessionEntity.kt index 95d9ec14b4..8114d50aa8 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/WithHeldSessionEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/model/WithHeldSessionEntity.kt @@ -16,9 +16,8 @@ package org.matrix.android.sdk.internal.crypto.store.db.model -import io.realm.RealmModel -import io.realm.annotations.Index -import io.realm.annotations.RealmClass +import io.realm.kotlin.types.RealmObject +import io.realm.kotlin.types.annotations.Index import org.matrix.android.sdk.api.session.events.model.content.WithHeldCode /** @@ -28,15 +27,13 @@ import org.matrix.android.sdk.api.session.events.model.content.WithHeldCode * For example, the sender may have blacklisted certain devices or users, * or may be choosing to not send the megolm key to devices that they have not verified yet. */ -@RealmClass -internal open class WithHeldSessionEntity( - var roomId: String? = null, - var algorithm: String? = null, - @Index var sessionId: String? = null, - @Index var senderKey: String? = null, - var codeString: String? = null, - var reason: String? = null -) : RealmModel { +internal class WithHeldSessionEntity : RealmObject { + var roomId: String? = null + var algorithm: String? = null + @Index var sessionId: String? = null + @Index var senderKey: String? = null + var codeString: String? = null + var reason: String? = null var code: WithHeldCode? get() {