Realm: use RealmModel instead of RealmObject so we can enable realm-kotlin plugin.

This commit is contained in:
ganfra 2022-07-21 18:18:48 +02:00
parent 186753f691
commit dee0b824e9
91 changed files with 333 additions and 151 deletions

View File

@ -16,8 +16,10 @@
package org.matrix.android.sdk.internal.auth.db
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class PendingSessionEntity(
var homeServerConnectionConfigJson: String = "",
var clientSecret: String = "",
@ -26,4 +28,4 @@ internal open class PendingSessionEntity(
var currentSession: String? = null,
var isRegistrationStarted: Boolean = false,
var currentThreePidDataJson: String? = null
) : RealmObject()
) : RealmModel

View File

@ -16,9 +16,11 @@
package org.matrix.android.sdk.internal.auth.db
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class SessionParamsEntity(
@PrimaryKey var sessionId: String = "",
var userId: String = "",
@ -28,4 +30,4 @@ internal open class SessionParamsEntity(
// In case of hard logout, this object is deleted from DB
var isTokenValid: Boolean = true,
var loginType: String = "",
) : RealmObject()
) : RealmModel

View File

@ -19,7 +19,7 @@ package org.matrix.android.sdk.internal.crypto.store.db
import android.util.Base64
import io.realm.Realm
import io.realm.RealmConfiguration
import io.realm.RealmObject
import io.realm.RealmModel
import java.io.ByteArrayOutputStream
import java.io.ObjectOutputStream
import java.util.zip.GZIPInputStream
@ -37,7 +37,7 @@ internal fun <T> doWithRealm(realmConfiguration: RealmConfiguration, action: (Re
/**
* Get realm, do the query, copy from realm, close realm, and return the copied result.
*/
internal fun <T : RealmObject> doRealmQueryAndCopy(realmConfiguration: RealmConfiguration, action: (Realm) -> T?): T? {
internal fun <T : RealmModel> doRealmQueryAndCopy(realmConfiguration: RealmConfiguration, action: (Realm) -> T?): T? {
return Realm.getInstance(realmConfiguration).use { realm ->
action.invoke(realm)?.let { realm.copyFromRealm(it) }
}
@ -46,7 +46,7 @@ internal fun <T : RealmObject> doRealmQueryAndCopy(realmConfiguration: RealmConf
/**
* Get realm, do the list query, copy from realm, close realm, and return the copied result.
*/
internal fun <T : RealmObject> doRealmQueryAndCopyList(realmConfiguration: RealmConfiguration, action: (Realm) -> Iterable<T>): Iterable<T> {
internal fun <T : RealmModel> doRealmQueryAndCopyList(realmConfiguration: RealmConfiguration, action: (Realm) -> Iterable<T>): Iterable<T> {
return Realm.getInstance(realmConfiguration).use { realm ->
action.invoke(realm).let { realm.copyFromRealm(it) }
}

View File

@ -25,6 +25,7 @@ import io.realm.Realm
import io.realm.RealmConfiguration
import io.realm.Sort
import io.realm.kotlin.createObject
import io.realm.kotlin.deleteFromRealm
import io.realm.kotlin.where
import org.matrix.android.sdk.api.crypto.MXCRYPTO_ALGORITHM_MEGOLM
import org.matrix.android.sdk.api.extensions.tryOrNull

View File

@ -16,13 +16,15 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
@RealmClass
internal open class AuditTrailEntity(
var ageLocalTs: Long? = null,
@Index var type: String? = null,
var contentJson: String? = null
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -17,16 +17,19 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
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<KeyInfoEntity> = RealmList()
) : RealmObject() {
) : RealmModel {
companion object

View File

@ -17,6 +17,7 @@ package org.matrix.android.sdk.internal.crypto.store.db.model
import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.session.crypto.crosssigning.DeviceTrustLevel
import org.matrix.android.sdk.api.session.crypto.model.CryptoDeviceInfo
import org.matrix.android.sdk.api.session.crypto.model.UnsignedDeviceInfo

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
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,
@ -53,7 +55,7 @@ internal open class CryptoMetadataEntity(
var keyBackupRecoveryKeyVersion: String? = null
// var crossSigningInfoEntity: CrossSigningInfoEntity? = null
) : RealmObject() {
) : RealmModel {
// Deserialize data
fun getOlmAccount(): OlmAccount? {

View File

@ -16,9 +16,11 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class CryptoRoomEntity(
@PrimaryKey var roomId: String? = null,
var algorithm: String? = null,
@ -34,7 +36,7 @@ internal open class CryptoRoomEntity(
// even if a new state event with empty encryption, or state is reset somehow
var wasEncryptedOnce: Boolean? = false
) :
RealmObject() {
RealmModel {
companion object
}

View File

@ -16,13 +16,16 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
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
internal fun DeviceInfoEntity.Companion.createPrimaryKey(userId: String, deviceId: String) = "$userId|$deviceId"
@RealmClass
internal open class DeviceInfoEntity(
@PrimaryKey var primaryKey: String = "",
var deviceId: String? = null,
@ -40,7 +43,7 @@ internal open class DeviceInfoEntity(
* and new ones. Used for example to detect new unverified login
*/
var firstTimeSeenLocalTs: Long? = null
) : RealmObject() {
) : RealmModel {
@LinkingObjects("devices")
val users: RealmResults<UserEntity>? = null

View File

@ -17,8 +17,11 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
@RealmClass
internal open class KeyInfoEntity(
var publicKeyBase64: String? = null,
// var isTrusted: Boolean = false,
@ -29,7 +32,7 @@ internal open class KeyInfoEntity(
*/
var signatures: String? = null,
var trustLevelEntity: TrustLevelEntity? = null
) : RealmObject()
) : RealmModel
internal fun KeyInfoEntity.deleteOnCascade() {
trustLevelEntity?.deleteFromRealm()

View File

@ -16,15 +16,17 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
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
) : RealmObject() {
) : RealmModel {
companion object
fun getEvent(): Event? {

View File

@ -16,9 +16,11 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@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
@ -27,4 +29,4 @@ internal open class KeysBackupDataEntity(
var backupLastServerHash: String? = null,
// The last known number of backed up keys on the server
var backupLastServerNumberOfKeys: Int? = null
) : RealmObject()
) : RealmModel

View File

@ -16,9 +16,11 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class MyDeviceLastSeenInfoEntity(
/** The device id. */
@PrimaryKey var deviceId: String? = null,
@ -28,7 +30,7 @@ internal open class MyDeviceLastSeenInfoEntity(
var lastSeenTs: Long? = null,
/** The last ip address. */
var lastSeenIp: String? = null
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,8 +16,9 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
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
@ -28,6 +29,7 @@ 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,
@ -54,7 +56,7 @@ internal open class OlmInboundGroupSessionEntity(
// Indicate if the key has been backed up to the homeserver
var backedUp: Boolean = false
) :
RealmObject() {
RealmModel {
fun store(wrapper: MXInboundMegolmSessionWrapper) {
this.serializedOlmInboundGroupSession = serializeForRealm(wrapper.session)

View File

@ -16,8 +16,9 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
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
@ -25,6 +26,7 @@ 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,
@ -32,7 +34,7 @@ internal open class OlmSessionEntity(
var olmSessionData: String? = null,
var lastReceivedMessageTs: Long = 0
) :
RealmObject() {
RealmModel {
fun getOlmSession(): OlmSession? {
return deserializeFromRealm(olmSessionData)

View File

@ -16,17 +16,19 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
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
) : RealmObject() {
) : RealmModel {
fun getOutboundGroupSession(): OlmOutboundGroupSession? {
return try {

View File

@ -19,8 +19,10 @@ 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.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
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
@ -33,6 +35,7 @@ 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,
@ -44,7 +47,7 @@ internal open class OutgoingKeyRequestEntity(
@Index var megolmSessionId: String? = null,
var replies: RealmList<KeyRequestReplyEntity> = RealmList()
) : RealmObject() {
) : RealmModel {
@Index private var requestStateStr: String = OutgoingRoomKeyRequestState.UNSENT.name

View File

@ -16,14 +16,16 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
/**
* 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,
@ -32,7 +34,7 @@ internal open class SharedSessionEntity(
@Index var deviceId: String? = null,
@Index var deviceIdentityKey: String? = null,
var chainIndex: Int? = null
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class TrustLevelEntity(
var crossSignedVerified: Boolean? = null,
var locallyVerified: Boolean? = null
) : RealmObject() {
) : RealmModel {
companion object

View File

@ -17,16 +17,19 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmList
import io.realm.RealmObject
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
@RealmClass
internal open class UserEntity(
@PrimaryKey var userId: String? = null,
var devices: RealmList<DeviceInfoEntity> = RealmList(),
var crossSigningInfoEntity: CrossSigningInfoEntity? = null,
var deviceTrackingStatus: Int = 0
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,8 +16,9 @@
package org.matrix.android.sdk.internal.crypto.store.db.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.session.events.model.content.WithHeldCode
/**
@ -27,6 +28,7 @@ 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,
@ -34,7 +36,7 @@ internal open class WithHeldSessionEntity(
@Index var senderKey: String? = null,
var codeString: String? = null,
var reason: String? = null
) : RealmObject() {
) : RealmModel {
var code: WithHeldCode?
get() {

View File

@ -20,6 +20,7 @@ import com.zhuinden.monarchy.Monarchy
import io.realm.Realm
import io.realm.RealmChangeListener
import io.realm.RealmConfiguration
import io.realm.RealmModel
import io.realm.RealmObject
import io.realm.RealmResults
import kotlinx.coroutines.CoroutineScope
@ -34,7 +35,7 @@ import java.util.concurrent.atomic.AtomicReference
internal interface LiveEntityObserver : SessionLifecycleObserver
internal abstract class RealmLiveEntityObserver<T : RealmObject>(protected val realmConfiguration: RealmConfiguration) :
internal abstract class RealmLiveEntityObserver<T : RealmModel>(protected val realmConfiguration: RealmConfiguration) :
LiveEntityObserver, RealmChangeListener<RealmResults<T>> {
private companion object {

View File

@ -17,6 +17,7 @@
package org.matrix.android.sdk.internal.database.helper
import io.realm.Realm
import io.realm.RealmObject
import io.realm.kotlin.createObject
import org.matrix.android.sdk.api.session.events.model.content.EncryptedEventContent
import org.matrix.android.sdk.api.session.events.model.toModel
@ -38,6 +39,7 @@ import org.matrix.android.sdk.internal.database.query.find
import org.matrix.android.sdk.internal.database.query.findLastForwardChunkOfRoom
import org.matrix.android.sdk.internal.database.query.getOrCreate
import org.matrix.android.sdk.internal.database.query.where
import org.matrix.android.sdk.internal.extensions.realm
import org.matrix.android.sdk.internal.session.room.timeline.PaginationDirection
import timber.log.Timber

View File

@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.database.helper
import com.squareup.moshi.JsonDataException
import io.realm.Realm
import io.realm.RealmModel
import io.realm.RealmQuery
import io.realm.Sort
import org.matrix.android.sdk.api.session.events.model.UnsignedData
@ -37,6 +38,7 @@ import org.matrix.android.sdk.internal.database.query.findLastForwardChunkOfRoom
import org.matrix.android.sdk.internal.database.query.where
import org.matrix.android.sdk.internal.database.query.whereRoomId
import org.matrix.android.sdk.internal.di.MoshiProvider
import org.matrix.android.sdk.internal.extensions.realm
import timber.log.Timber
private typealias Summary = Pair<Int, TimelineEventEntity>?

View File

@ -44,6 +44,7 @@ import org.matrix.android.sdk.internal.database.query.copyToRealmOrIgnore
import org.matrix.android.sdk.internal.database.query.getOrCreate
import org.matrix.android.sdk.internal.database.query.getOrNull
import org.matrix.android.sdk.internal.database.query.where
import org.matrix.android.sdk.internal.extensions.realm
import org.matrix.android.sdk.internal.session.events.getFixedRoomMemberContent
import org.matrix.android.sdk.internal.session.room.timeline.TimelineEventDecryptor
import timber.log.Timber

View File

@ -18,12 +18,14 @@ package org.matrix.android.sdk.internal.database.mapper
import io.realm.Realm
import io.realm.RealmList
import io.realm.kotlin.isManaged
import org.matrix.android.sdk.api.session.room.model.ReadReceipt
import org.matrix.android.sdk.internal.database.RealmSessionProvider
import org.matrix.android.sdk.internal.database.model.ReadReceiptEntity
import org.matrix.android.sdk.internal.database.model.ReadReceiptsSummaryEntity
import org.matrix.android.sdk.internal.database.model.RoomMemberSummaryEntity
import org.matrix.android.sdk.internal.database.query.where
import org.matrix.android.sdk.internal.extensions.realm
import javax.inject.Inject
internal class ReadReceiptsSummaryMapper @Inject constructor(
@ -36,7 +38,7 @@ internal class ReadReceiptsSummaryMapper @Inject constructor(
}
val readReceipts = readReceiptsSummaryEntity.readReceipts
// Avoid opening a new realm if we already have one opened
return if (readReceiptsSummaryEntity.isManaged) {
return if (readReceiptsSummaryEntity.isManaged()) {
map(readReceipts, readReceiptsSummaryEntity.realm)
} else {
realmSessionProvider.withRealm { realm ->

View File

@ -17,11 +17,13 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class BreadcrumbsEntity(
var recentRoomIds: RealmList<String> = RealmList()
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -17,13 +17,16 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.annotations.Index
import io.realm.annotations.LinkingObjects
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.internal.extensions.assertIsManaged
import org.matrix.android.sdk.internal.extensions.clearWith
@RealmClass
internal open class ChunkEntity(
@Index var prevToken: String? = null,
// Because of gaps we can have several chunks with nextToken == null
@ -38,7 +41,7 @@ internal open class ChunkEntity(
// Threads
@Index var rootThreadEventId: String? = null,
@Index var isLastForwardThread: Boolean = false,
) : RealmObject() {
) : RealmModel {
fun identifier() = "${prevToken}_$nextToken"

View File

@ -17,15 +17,17 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
@RealmClass
internal open class CurrentStateEventEntity(
var eventId: String = "",
var root: EventEntity? = null,
@Index var roomId: String = "",
@Index var type: String = "",
@Index var stateKey: String = ""
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,13 +16,15 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class DraftEntity(
var content: String = "",
var draftMode: String = MODE_REGULAR,
var linkedEventId: String = ""
) : RealmObject() {
) : RealmModel {
companion object {
const val MODE_REGULAR = "REGULAR"

View File

@ -16,16 +16,17 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
/**
* Keep all the editions of a message.
*/
@RealmClass
internal open class EditAggregatedSummaryEntity(
// The list of the editions used to build the summary (might be out of sync if chunked received from message chunk)
var editions: RealmList<EditionOfEvent> = RealmList()
) : RealmObject() {
) : RealmModel {
companion object
}
@ -37,4 +38,4 @@ internal open class EditionOfEvent(
var content: String? = null,
var timestamp: Long = 0,
var isLocalEcho: Boolean = false
) : RealmObject()
) : RealmModel

View File

@ -16,11 +16,14 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
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.database.model.livelocation.LiveLocationShareAggregatedSummaryEntity
import timber.log.Timber
@RealmClass
internal open class EventAnnotationsSummaryEntity(
@PrimaryKey
var eventId: String = "",
@ -30,7 +33,7 @@ internal open class EventAnnotationsSummaryEntity(
var referencesSummaryEntity: ReferencesAggregatedSummaryEntity? = null,
var pollResponseSummary: PollResponseAggregatedSummaryEntity? = null,
var liveLocationShareAggregatedSummary: LiveLocationShareAggregatedSummaryEntity? = null,
) : RealmObject() {
) : RealmModel {
/**
* Cleanup undesired editions, done by users different from the originalEventSender.

View File

@ -16,8 +16,10 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmModel
import io.realm.RealmObject
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.session.crypto.model.MXEventDecryptionResult
import org.matrix.android.sdk.api.session.crypto.model.OlmDecryptionResult
import org.matrix.android.sdk.api.session.room.send.SendState
@ -25,6 +27,7 @@ import org.matrix.android.sdk.api.session.threads.ThreadNotificationState
import org.matrix.android.sdk.internal.di.MoshiProvider
import org.matrix.android.sdk.internal.extensions.assertIsManaged
@RealmClass
internal open class EventEntity(
@Index var eventId: String = "",
@Index var roomId: String = "",
@ -48,7 +51,7 @@ internal open class EventEntity(
// Number messages within the thread
var numberOfThreads: Int = 0,
var threadSummaryLatestMessage: TimelineEventEntity? = null
) : RealmObject() {
) : RealmModel {
private var sendStateStr: String = SendState.UNKNOWN.name
@ -95,7 +98,7 @@ internal open class EventEntity(
decryptionErrorReason = null
// If we have an EventInsertEntity for the eventId we make sures it can be processed now.
realm.where(EventInsertEntity::class.java)
RealmObject.getRealm(this).where(EventInsertEntity::class.java)
.equalTo(EventInsertEntityFields.EVENT_ID, eventId)
.findFirst()
?.canBeProcessed = true

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
/**
* This class is used to get notification on new events being inserted. It's to avoid realm getting slow when listening to insert
* in EventEntity table.
*/
@RealmClass
internal open class EventInsertEntity(
var eventId: String = "",
var eventType: String = "",
@ -30,7 +32,7 @@ internal open class EventInsertEntity(
* Currently it's set to false when the event content is encrypted.
*/
var canBeProcessed: Boolean = true
) : RealmObject() {
) : RealmModel {
private var insertTypeStr: String = EventInsertType.INCREMENTAL_SYNC.name
var insertType: EventInsertType

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
/**
* Contain a map between Json filter string and filterId (from Homeserver).
* Currently there is only one object in this table.
*/
@RealmClass
internal open class FilterEntity(
// The serialized FilterBody
var filterBodyJson: String = "",
@ -30,7 +32,7 @@ internal open class FilterEntity(
// the id server side of the filterBodyJson, can be used instead of filterBodyJson if not blank
var filterId: String = ""
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,16 +16,18 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.session.room.model.Membership
/**
* This class is used to store group info (groupId and membership) from the sync response.
* Then GetGroupDataTask is called regularly to fetch group information from the homeserver.
*/
@RealmClass
internal open class GroupEntity(@PrimaryKey var groupId: String = "") :
RealmObject() {
RealmModel {
private var membershipStr: String = Membership.NONE.name
var membership: Membership

View File

@ -17,10 +17,12 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.session.room.model.Membership
@RealmClass
internal open class GroupSummaryEntity(
@PrimaryKey var groupId: String = "",
var displayName: String = "",
@ -28,7 +30,7 @@ internal open class GroupSummaryEntity(
var avatarUrl: String = "",
var roomIds: RealmList<String> = RealmList(),
var userIds: RealmList<String> = RealmList()
) : RealmObject() {
) : RealmModel {
private var membershipStr: String = Membership.NONE.name
var membership: Membership

View File

@ -16,9 +16,11 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.session.homeserver.HomeServerCapabilities
@RealmClass
internal open class HomeServerCapabilitiesEntity(
var canChangePassword: Boolean = true,
var canChangeDisplayName: Boolean = true,
@ -31,7 +33,7 @@ internal open class HomeServerCapabilitiesEntity(
var lastUpdatedTimestamp: Long = 0L,
var canUseThreading: Boolean = false,
var canControlLogoutDevices: Boolean = false
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,9 +16,11 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
internal open class IgnoredUserEntity(var userId: String = "") : RealmObject() {
@RealmClass
internal open class IgnoredUserEntity(var userId: String = "") : RealmModel {
companion object
}

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class KnownServerUrlEntity(
@PrimaryKey
var url: String = ""
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,11 +16,13 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
/**
* This class is used to store pending threePid data, when user wants to add a threePid to his account.
*/
@RealmClass
internal open class PendingThreePidEntity(
var email: String? = null,
var msisdn: String? = null,
@ -28,4 +30,4 @@ internal open class PendingThreePidEntity(
var sendAttempt: Int = 0,
var sid: String = "",
var submitUrl: String? = null
) : RealmObject()
) : RealmModel

View File

@ -16,11 +16,13 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
/**
* Keep the latest state of a poll.
*/
@RealmClass
internal open class PollResponseAggregatedSummaryEntity(
// For now we persist this a JSON for greater flexibility
// #see PollSummaryContent
@ -34,7 +36,7 @@ internal open class PollResponseAggregatedSummaryEntity(
// The list of the eventIDs used to build the summary (might be out of sync if chunked received from message chunk)
var sourceEvents: RealmList<String> = RealmList(),
var sourceLocalEchoEvents: RealmList<String> = RealmList()
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,9 +16,11 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class PreviewUrlCacheEntity(
@PrimaryKey
var url: String = "",
@ -31,7 +33,7 @@ internal open class PreviewUrlCacheEntity(
var imageWidth: Int? = null,
var imageHeight: Int? = null,
var lastUpdatedTimestamp: Long = 0L
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -15,14 +15,16 @@
*/
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class PushConditionEntity(
var kind: String = "",
var key: String? = null,
var pattern: String? = null,
var iz: String? = null
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,10 +16,13 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.annotations.LinkingObjects
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
@RealmClass
internal open class PushRuleEntity(
// Required. The actions to perform when this rule is matched.
var actionsStr: String? = null,
@ -33,7 +36,7 @@ internal open class PushRuleEntity(
var conditions: RealmList<PushConditionEntity>? = RealmList(),
// The glob-style pattern to match against. Only applicable to content rules.
var pattern: String? = null
) : RealmObject() {
) : RealmModel {
@LinkingObjects("pushRules")
val parent: RealmResults<PushRulesEntity>? = null

View File

@ -16,14 +16,17 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.session.pushrules.RuleKind
import org.matrix.android.sdk.internal.extensions.clearWith
@RealmClass
internal open class PushRulesEntity(
var scope: String = "",
var pushRules: RealmList<PushRuleEntity> = RealmList()
) : RealmObject() {
) : RealmModel {
private var kindStr: String = RuleKind.CONTENT.name
var kind: RuleKind

View File

@ -15,11 +15,13 @@
*/
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class PusherDataEntity(
var url: String? = null,
var format: String? = null
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -15,7 +15,9 @@
*/
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.session.pushers.PusherState
// TODO
@ -27,6 +29,7 @@ import org.matrix.android.sdk.api.session.pushers.PusherState
// at org.matrix.android.sdk.internal.database.model.PusherEntity.setData(PusherEntity.kt:16)
// at org.matrix.android.sdk.internal.session.pushers.AddHttpPusherWorker$doWork$$inlined$fold$lambda$2.execute(AddHttpPusherWorker.kt:70)
// at io.realm.Realm.executeTransaction(Realm.java:1493)
@RealmClass
internal open class PusherEntity(
var pushKey: String = "",
var kind: String? = null,
@ -36,7 +39,7 @@ internal open class PusherEntity(
var profileTag: String? = null,
var lang: String? = null,
var data: PusherDataEntity? = null
) : RealmObject() {
) : RealmModel {
private var stateStr: String = PusherState.UNREGISTERED.name
var state: PusherState

View File

@ -16,15 +16,17 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class RawCacheEntity(
@PrimaryKey
var url: String = "",
var data: String = "",
var lastUpdatedTimestamp: Long = 0L
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -17,11 +17,13 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
/**
* Aggregated Summary of a reaction.
*/
@RealmClass
internal open class ReactionAggregatedSummaryEntity(
// The reaction String 😀
var key: String = "",
@ -35,7 +37,7 @@ internal open class ReactionAggregatedSummaryEntity(
var sourceEvents: RealmList<String> = RealmList(),
// List of transaction ids for local echos
var sourceLocalEcho: RealmList<String> = RealmList()
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,14 +16,16 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class ReadMarkerEntity(
@PrimaryKey
var roomId: String = "",
var eventId: String = ""
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,18 +16,20 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.annotations.LinkingObjects
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class ReadReceiptEntity(
@PrimaryKey var primaryKey: String = "",
var eventId: String = "",
var roomId: String = "",
var userId: String = "",
var originServerTs: Double = 0.0
) : RealmObject() {
) : RealmModel {
companion object
@LinkingObjects("readReceipts")

View File

@ -17,17 +17,20 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
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
@RealmClass
internal open class ReadReceiptsSummaryEntity(
@PrimaryKey
var eventId: String = "",
var roomId: String = "",
var readReceipts: RealmList<ReadReceiptEntity> = RealmList()
) : RealmObject() {
) : RealmModel {
@LinkingObjects("readReceipts")
val timelineEvent: RealmResults<TimelineEventEntity>? = null

View File

@ -16,8 +16,10 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class ReferencesAggregatedSummaryEntity(
var eventId: String = "",
var content: String? = null,
@ -25,7 +27,7 @@ internal open class ReferencesAggregatedSummaryEntity(
var sourceEvents: RealmList<String> = RealmList(),
// List of transaction ids for local echos
var sourceLocalEcho: RealmList<String> = RealmList()
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,7 +16,7 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
@ -24,4 +24,4 @@ import io.realm.annotations.RealmClass
internal open class RoomAccountDataEntity(
@Index var type: String? = null,
var contentStr: String? = null
) : RealmObject()
) : RealmModel

View File

@ -17,20 +17,23 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.session.room.model.Membership
import org.matrix.android.sdk.internal.database.model.threads.ThreadSummaryEntity
import org.matrix.android.sdk.internal.database.query.findRootOrLatest
import org.matrix.android.sdk.internal.extensions.assertIsManaged
@RealmClass
internal open class RoomEntity(
@PrimaryKey var roomId: String = "",
var chunks: RealmList<ChunkEntity> = RealmList(),
var sendingTimelineEvents: RealmList<TimelineEventEntity> = RealmList(),
var threadSummaries: RealmList<ThreadSummaryEntity> = RealmList(),
var accountData: RealmList<RoomAccountDataEntity> = RealmList()
) : RealmObject() {
) : RealmModel {
private var membershipStr: String = Membership.NONE.name
var membership: Membership

View File

@ -16,13 +16,15 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.session.room.model.Membership
import org.matrix.android.sdk.api.util.MatrixItem
import org.matrix.android.sdk.internal.database.model.presence.UserPresenceEntity
@RealmClass
internal open class RoomMemberSummaryEntity(
@PrimaryKey var primaryKey: String = "",
@Index var userId: String = "",
@ -31,7 +33,7 @@ internal open class RoomMemberSummaryEntity(
var avatarUrl: String? = null,
var reason: String? = null,
var isDirect: Boolean = false
) : RealmObject() {
) : RealmModel {
private var membershipStr: String = Membership.NONE.name
var membership: Membership

View File

@ -17,9 +17,11 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel
import org.matrix.android.sdk.api.session.room.model.Membership
@ -30,12 +32,13 @@ import org.matrix.android.sdk.api.session.room.model.tag.RoomTag
import org.matrix.android.sdk.internal.database.model.presence.UserPresenceEntity
import org.matrix.android.sdk.internal.session.room.membership.RoomName
@RealmClass
internal open class RoomSummaryEntity(
@PrimaryKey var roomId: String = "",
var roomType: String? = null,
var parents: RealmList<SpaceParentSummaryEntity> = RealmList(),
var children: RealmList<SpaceChildSummaryEntity> = RealmList()
) : RealmObject() {
) : RealmModel {
private var displayName: String? = ""

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class RoomTagEntity(
var tagName: String = "",
var tagOrder: Double? = null
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,13 +16,15 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class ScalarTokenEntity(
@PrimaryKey var serverUrl: String = "",
var token: String = ""
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -17,11 +17,13 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
/**
* Decorates room summary with space related information.
*/
@RealmClass
internal open class SpaceChildSummaryEntity(
// var isSpace: Boolean = false,
@ -40,7 +42,7 @@ internal open class SpaceChildSummaryEntity(
// var level: Int = 0
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -17,11 +17,13 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
/**
* Decorates room summary with space related information.
*/
@RealmClass
internal open class SpaceParentSummaryEntity(
/**
* Determines whether this is the main parent for the space
@ -39,7 +41,7 @@ internal open class SpaceParentSummaryEntity(
var viaServers: RealmList<String> = RealmList()
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,10 +16,12 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class SyncEntity(
var nextBatch: String? = null,
@PrimaryKey var id: Long = 0
) : RealmObject()
) : RealmModel

View File

@ -16,12 +16,15 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.annotations.Index
import io.realm.annotations.LinkingObjects
import io.realm.annotations.RealmClass
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.internal.extensions.assertIsManaged
@RealmClass
internal open class TimelineEventEntity(
var localId: Long = 0,
@Index var eventId: String = "",
@ -37,7 +40,7 @@ internal open class TimelineEventEntity(
// to a thread chunk and is a temporarily event.
var ownedByThreadChunk: Boolean = false,
var readReceipts: ReadReceiptsSummaryEntity? = null
) : RealmObject() {
) : RealmModel {
@LinkingObjects("timelineEvents")
val chunk: RealmResults<ChunkEntity>? = null

View File

@ -16,8 +16,9 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
/**
* Clients can store custom config data for their account on their homeserver.
@ -25,10 +26,11 @@ import io.realm.annotations.Index
* Users may only view the account data for their own account.
* The account_data may be either global or scoped to a particular rooms.
*/
@RealmClass
internal open class UserAccountDataEntity(
@Index var type: String? = null,
var contentStr: String? = null
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -17,16 +17,18 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.annotations.LinkingObjects
import io.realm.annotations.RealmClass
/**
* Create a specific table to be able to do direct query on it and keep the draft ordered.
*/
@RealmClass
internal open class UserDraftsEntity(
var userDrafts: RealmList<DraftEntity> = RealmList()
) : RealmObject() {
) : RealmModel {
// Link to RoomSummaryEntity
@LinkingObjects("userDrafts")

View File

@ -16,14 +16,16 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class UserEntity(
@PrimaryKey var userId: String = "",
var displayName: String = "",
var avatarUrl: String = ""
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -15,11 +15,13 @@
*/
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class UserThreePidEntity(
var medium: String = "",
var address: String = "",
var validatedAt: Long = 0,
var addedAt: Long = 0
) : RealmObject()
) : RealmModel

View File

@ -16,14 +16,16 @@
package org.matrix.android.sdk.internal.database.model
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
@RealmClass
internal open class WellknownIntegrationManagerConfigEntity(
@PrimaryKey var id: Long = 0,
var apiUrl: String = "",
var uiUrl: String = ""
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.database.model.livelocation
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
/**
* Aggregation info concerning a live location share.
*/
@RealmClass
internal open class LiveLocationShareAggregatedSummaryEntity(
/**
* Event id of the event that started the live.
@ -45,6 +47,6 @@ internal open class LiveLocationShareAggregatedSummaryEntity(
* @see [org.matrix.android.sdk.api.session.room.model.message.MessageBeaconLocationDataContent]
*/
var lastLocationContent: String? = null,
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,11 +16,13 @@
package org.matrix.android.sdk.internal.database.model.presence
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.session.presence.model.PresenceEnum
import org.matrix.android.sdk.api.session.presence.model.UserPresence
@RealmClass
internal open class UserPresenceEntity(
@PrimaryKey var userId: String = "",
var lastActiveAgo: Long? = null,
@ -28,7 +30,7 @@ internal open class UserPresenceEntity(
var isCurrentlyActive: Boolean? = null,
var avatarUrl: String? = null,
var displayName: String? = null
) : RealmObject() {
) : RealmModel {
var presence: PresenceEnum
get() {

View File

@ -16,13 +16,15 @@
package org.matrix.android.sdk.internal.database.model.threads
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.annotations.Index
import io.realm.annotations.LinkingObjects
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.internal.database.model.EventEntity
import org.matrix.android.sdk.internal.database.model.RoomEntity
@RealmClass
internal open class ThreadSummaryEntity(
@Index var rootThreadEventId: String? = "",
var rootThreadEventEntity: EventEntity? = null,
@ -35,7 +37,7 @@ internal open class ThreadSummaryEntity(
var isUserParticipating: Boolean = false,
var latestThreadIsUniqueDisplayName: Boolean = false,
var numberOfThreads: Int = 0
) : RealmObject() {
) : RealmModel {
@LinkingObjects("threadSummaries")
val room: RealmResults<RoomEntity>? = null

View File

@ -23,6 +23,7 @@ import org.matrix.android.sdk.api.session.room.model.Membership
import org.matrix.android.sdk.internal.database.model.EventEntity
import org.matrix.android.sdk.internal.database.model.RoomEntity
import org.matrix.android.sdk.internal.database.model.RoomEntityFields
import org.matrix.android.sdk.internal.extensions.realm
internal fun RoomEntity.Companion.where(realm: Realm, roomId: String): RealmQuery<RoomEntity> {
return realm.where<RoomEntity>()

View File

@ -16,16 +16,23 @@
package org.matrix.android.sdk.internal.extensions
import io.realm.Realm
import io.realm.RealmList
import io.realm.RealmModel
import io.realm.RealmObject
import io.realm.RealmObjectSchema
import org.matrix.android.sdk.internal.database.model.HomeServerCapabilitiesEntityFields
import org.matrix.android.sdk.internal.util.fatalError
internal fun RealmObject.assertIsManaged() {
check(isManaged) { "${javaClass.simpleName} entity should be managed to use this function" }
internal fun RealmModel.assertIsManaged() {
check(RealmObject.isManaged(this)) { "${javaClass.simpleName} entity should be managed to use this function" }
}
internal val RealmModel.realm: Realm
get() {
return RealmObject.getRealm(this)
}
/**
* Clear a RealmList by deleting all its items calling the provided lambda.
* The lambda is supposed to delete the item, which means that after this operation, the list will be empty.

View File

@ -16,10 +16,11 @@
package org.matrix.android.sdk.internal.query
import io.realm.RealmModel
import io.realm.RealmObject
import io.realm.RealmQuery
internal fun <T : RealmObject, E : Enum<E>> RealmQuery<T>.process(field: String, enums: List<Enum<E>>): RealmQuery<T> {
internal fun <T : RealmModel, E : Enum<E>> RealmQuery<T>.process(field: String, enums: List<Enum<E>>): RealmQuery<T> {
val lastEnumValue = enums.lastOrNull()
beginGroup()
for (enumValue in enums) {

View File

@ -17,7 +17,7 @@
package org.matrix.android.sdk.internal.query
import io.realm.Case
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.RealmQuery
import org.matrix.android.sdk.api.query.QueryStringValue
import org.matrix.android.sdk.api.query.QueryStringValue.ContentQueryStringValue
@ -28,7 +28,7 @@ internal class QueryStringValueProcessor @Inject constructor(
private val normalizer: Normalizer
) {
fun <T : RealmObject> RealmQuery<T>.process(field: String, queryStringValue: QueryStringValue): RealmQuery<T> {
fun <T : RealmModel> RealmQuery<T>.process(field: String, queryStringValue: QueryStringValue): RealmQuery<T> {
return when (queryStringValue) {
is QueryStringValue.NoCondition -> this
is QueryStringValue.IsNotNull -> isNotNull(field)

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.session.contentscanner.db
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.Index
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.session.contentscanner.ScanState
import org.matrix.android.sdk.api.session.contentscanner.ScanStatusInfo
@RealmClass
internal open class ContentScanResultEntity(
@Index
var mediaUrl: String? = null,
@ -29,7 +31,7 @@ internal open class ContentScanResultEntity(
var humanReadableMessage: String? = null,
var scanDateTimestamp: Long? = null,
var scannerUrl: String? = null
) : RealmObject() {
) : RealmModel {
var scanResult: ScanState
get() {

View File

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.session.contentscanner.db
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class ContentScannerInfoEntity(
var serverUrl: String? = null,
var enabled: Boolean? = null
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -17,15 +17,17 @@
package org.matrix.android.sdk.internal.session.identity.db
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.RealmClass
@RealmClass
internal open class IdentityDataEntity(
var identityServerUrl: String? = null,
var token: String? = null,
var hashLookupPepper: String? = null,
var hashLookupAlgorithm: RealmList<String> = RealmList(),
var userConsent: Boolean = false
) : RealmObject() {
) : RealmModel {
companion object
}

View File

@ -16,11 +16,13 @@
package org.matrix.android.sdk.internal.session.identity.db
import io.realm.RealmObject
import io.realm.RealmModel
import io.realm.annotations.PrimaryKey
import io.realm.annotations.RealmClass
import org.matrix.android.sdk.api.session.identity.ThreePid
import org.matrix.android.sdk.api.session.identity.toMedium
@RealmClass
internal open class IdentityPendingBindingEntity(
@PrimaryKey var threePid: String = "",
/* Managed by Riot */
@ -29,7 +31,7 @@ internal open class IdentityPendingBindingEntity(
var sendAttempt: Int = 0,
/* Provided by the identity server */
var sid: String = ""
) : RealmObject() {
) : RealmModel {
companion object {
fun ThreePid.toPrimaryKey() = "${toMedium()}_$value"

View File

@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.session.identity.db
import io.realm.Realm
import io.realm.kotlin.createObject
import io.realm.kotlin.deleteFromRealm
import io.realm.kotlin.where
import org.matrix.android.sdk.api.session.identity.ThreePid

View File

@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.session.pushers
import com.zhuinden.monarchy.Monarchy
import io.realm.Realm
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.session.pushers.PusherState
import org.matrix.android.sdk.internal.database.mapper.asDomain
import org.matrix.android.sdk.internal.database.model.PusherEntity

View File

@ -16,6 +16,7 @@
package org.matrix.android.sdk.internal.session.room
import io.realm.Realm
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.query.QueryStringValue
import org.matrix.android.sdk.api.session.crypto.verification.VerificationState
import org.matrix.android.sdk.api.session.events.model.AggregatedAnnotation

View File

@ -17,6 +17,7 @@
package org.matrix.android.sdk.internal.session.room.prune
import io.realm.Realm
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.session.events.model.Event
import org.matrix.android.sdk.api.session.events.model.EventType
import org.matrix.android.sdk.api.session.events.model.LocalEcho

View File

@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.session.room.send
import com.zhuinden.monarchy.Monarchy
import io.realm.Realm
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.api.session.events.model.Event
import org.matrix.android.sdk.api.session.events.model.EventType
import org.matrix.android.sdk.api.session.events.model.toModel

View File

@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.session.room.summary
import io.realm.Realm
import io.realm.kotlin.createObject
import io.realm.kotlin.deleteFromRealm
import kotlinx.coroutines.runBlocking
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.extensions.tryOrNull
@ -58,6 +59,7 @@ import org.matrix.android.sdk.internal.database.query.isEventRead
import org.matrix.android.sdk.internal.database.query.where
import org.matrix.android.sdk.internal.di.UserId
import org.matrix.android.sdk.internal.extensions.clearWith
import org.matrix.android.sdk.internal.extensions.realm
import org.matrix.android.sdk.internal.query.process
import org.matrix.android.sdk.internal.session.room.RoomAvatarResolver
import org.matrix.android.sdk.internal.session.room.accountdata.RoomAccountDataDataSource

View File

@ -23,6 +23,7 @@ import io.realm.RealmConfiguration
import io.realm.RealmResults
import io.realm.kotlin.createObject
import io.realm.kotlin.executeTransactionAwait
import io.realm.kotlin.isValid
import kotlinx.coroutines.CompletableDeferred
import org.matrix.android.sdk.api.MatrixCoroutineDispatchers
import org.matrix.android.sdk.api.extensions.orFalse
@ -301,7 +302,7 @@ internal class LoadTimelineStrategy constructor(
this.rootThreadEventId = rootThreadEventId
this.isLastForwardThread = true
}
if (threadChunk.isValid) {
if (threadChunk.isValid()) {
RoomEntity.where(it, roomId).findFirst()?.addIfNecessary(threadChunk)
}
}

View File

@ -23,6 +23,8 @@ import io.realm.RealmObjectChangeListener
import io.realm.RealmQuery
import io.realm.RealmResults
import io.realm.Sort
import io.realm.kotlin.addChangeListener
import io.realm.kotlin.removeChangeListener
import kotlinx.coroutines.CompletableDeferred
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.extensions.tryOrNull

View File

@ -19,6 +19,7 @@ package org.matrix.android.sdk.internal.session.room.timeline
import com.zhuinden.monarchy.Monarchy
import dagger.Lazy
import io.realm.Realm
import io.realm.kotlin.isValid
import org.matrix.android.sdk.api.session.events.model.EventType
import org.matrix.android.sdk.api.session.events.model.toModel
import org.matrix.android.sdk.api.session.room.model.RoomMemberContent
@ -40,6 +41,7 @@ import org.matrix.android.sdk.internal.database.query.findLastForwardChunkOfRoom
import org.matrix.android.sdk.internal.database.query.where
import org.matrix.android.sdk.internal.di.SessionDatabase
import org.matrix.android.sdk.internal.di.UserId
import org.matrix.android.sdk.internal.extensions.realm
import org.matrix.android.sdk.internal.session.StreamEventsManager
import org.matrix.android.sdk.internal.util.awaitTransaction
import org.matrix.android.sdk.internal.util.time.Clock
@ -183,7 +185,7 @@ internal class TokenChunkEventPersistor @Inject constructor(
}
}
}
if (currentChunk.isValid) {
if (currentChunk.isValid()) {
RoomEntity.where(realm, roomId).findFirst()?.addIfNecessary(currentChunk)
}

View File

@ -17,6 +17,7 @@
package org.matrix.android.sdk.internal.session.widgets.token
import com.zhuinden.monarchy.Monarchy
import io.realm.kotlin.deleteFromRealm
import org.matrix.android.sdk.internal.database.model.ScalarTokenEntity
import org.matrix.android.sdk.internal.database.query.where
import org.matrix.android.sdk.internal.di.SessionDatabase