From 289c03e724649dc7482c027033daea0a1e0f4aed Mon Sep 17 00:00:00 2001 From: Valere Date: Fri, 13 Dec 2019 16:37:41 +0100 Subject: [PATCH] Code review --- .../room/model/ReferencesAggregatedSummary.kt | 2 +- .../internal/database/model/EventEntity.kt | 5 ++--- .../query/EventAnnotationsSummaryEntityQuery.kt | 4 ++++ .../ReferencesAggregatedSummaryEntityQueries.kt | 16 ++++++++++++++++ .../room/EventRelationsAggregationTask.kt | 17 +++++------------ 5 files changed, 28 insertions(+), 16 deletions(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/ReferencesAggregatedSummary.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/ReferencesAggregatedSummary.kt index ca9d81cba1..018436ad6b 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/ReferencesAggregatedSummary.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/ReferencesAggregatedSummary.kt @@ -21,7 +21,7 @@ import im.vector.matrix.android.api.session.events.model.Content * Events can relates to other events, this object keeps a summary * of all events that are referencing the 'eventId' event via the RelationType.REFERENCE */ -class ReferencesAggregatedSummary( +data class ReferencesAggregatedSummary( val eventId: String, val content: Content?, val sourceEvents: List, diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/model/EventEntity.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/model/EventEntity.kt index 9e3ed6a93b..71e787561b 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/model/EventEntity.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/model/EventEntity.kt @@ -40,7 +40,8 @@ internal open class EventEntity(@Index var eventId: String = "", @Index var displayIndex: Int = 0, @Index var isUnlinked: Boolean = false, var decryptionResultJson: String? = null, - var decryptionErrorCode: String? = null + var decryptionErrorCode: String? = null, + var ageLocalTs: Long? = null ) : RealmObject() { enum class LinkFilterMode { @@ -59,8 +60,6 @@ internal open class EventEntity(@Index var eventId: String = "", sendStateStr = value.name } - var ageLocalTs: Long? = null - companion object @LinkingObjects("untimelinedStateEvents") diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/query/EventAnnotationsSummaryEntityQuery.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/query/EventAnnotationsSummaryEntityQuery.kt index 1e7a5758ad..03025cb9bb 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/query/EventAnnotationsSummaryEntityQuery.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/query/EventAnnotationsSummaryEntityQuery.kt @@ -47,3 +47,7 @@ internal fun EventAnnotationsSummaryEntity.Companion.create(realm: Realm, roomId } return obj } +internal fun EventAnnotationsSummaryEntity.Companion.getOrCreate(realm: Realm, roomId: String, eventId: String): EventAnnotationsSummaryEntity { + return EventAnnotationsSummaryEntity.where(realm, eventId).findFirst() + ?: EventAnnotationsSummaryEntity.create(realm, roomId, eventId).apply { this.roomId = roomId } +} diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/query/ReferencesAggregatedSummaryEntityQueries.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/query/ReferencesAggregatedSummaryEntityQueries.kt index 88f127066d..7d2ed98232 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/query/ReferencesAggregatedSummaryEntityQueries.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/database/query/ReferencesAggregatedSummaryEntityQueries.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2019 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package im.vector.matrix.android.internal.database.query import im.vector.matrix.android.internal.database.model.ReferencesAggregatedSummaryEntity diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/EventRelationsAggregationTask.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/EventRelationsAggregationTask.kt index 5c38fcf797..a162849fa9 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/EventRelationsAggregationTask.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/EventRelationsAggregationTask.kt @@ -29,6 +29,7 @@ import im.vector.matrix.android.internal.database.mapper.ContentMapper import im.vector.matrix.android.internal.database.mapper.EventMapper import im.vector.matrix.android.internal.database.model.* import im.vector.matrix.android.internal.database.query.create +import im.vector.matrix.android.internal.database.query.getOrCreate import im.vector.matrix.android.internal.database.query.where import im.vector.matrix.android.internal.task.Task import im.vector.matrix.android.internal.util.awaitTransaction @@ -201,11 +202,7 @@ internal class DefaultEventRelationsAggregationTask @Inject constructor( val targetEventId = relatedEventId ?: content.relatesTo?.eventId ?: return val newContent = content.newContent ?: return // ok, this is a replace - var existing = EventAnnotationsSummaryEntity.where(realm, targetEventId).findFirst() - if (existing == null) { - Timber.v("###REPLACE creating new relation summary for $targetEventId") - existing = EventAnnotationsSummaryEntity.create(realm, roomId, targetEventId) - } + val existing = EventAnnotationsSummaryEntity.getOrCreate(realm, roomId, targetEventId) // we have it val existingSummary = existing.editSummary @@ -295,8 +292,7 @@ internal class DefaultEventRelationsAggregationTask @Inject constructor( val relatedEventID = content.relatesTo.eventId val reactionEventId = event.eventId Timber.v("Reaction $reactionEventId relates to $relatedEventID") - val eventSummary = EventAnnotationsSummaryEntity.where(realm, relatedEventID).findFirst() - ?: EventAnnotationsSummaryEntity.create(realm, roomId, relatedEventID).apply { this.roomId = roomId } + val eventSummary = EventAnnotationsSummaryEntity.getOrCreate(realm, roomId, relatedEventID) var sum = eventSummary.reactionsSummary.find { it.key == reaction } val txId = event.unsignedData?.transactionId @@ -420,8 +416,7 @@ internal class DefaultEventRelationsAggregationTask @Inject constructor( } private fun handleVerification(realm: Realm, event: Event, roomId: String, isLocalEcho: Boolean, relatedEventId: String, userId: String) { - val eventSummary = EventAnnotationsSummaryEntity.where(realm, relatedEventId).findFirst() - ?: EventAnnotationsSummaryEntity.create(realm, roomId, relatedEventId).apply { this.roomId = roomId } + val eventSummary = EventAnnotationsSummaryEntity.getOrCreate(realm, roomId, relatedEventId) val verifSummary = eventSummary.referencesSummaryEntity ?: ReferencesAggregatedSummaryEntity.create(realm, relatedEventId).also { @@ -469,9 +464,7 @@ internal class DefaultEventRelationsAggregationTask @Inject constructor( if (isLocalEcho) { verifSummary.sourceLocalEcho.add(event.eventId) } else { - if (verifSummary.sourceLocalEcho.contains(txId)) { - verifSummary.sourceLocalEcho.remove(txId) - } + verifSummary.sourceLocalEcho.remove(txId) verifSummary.sourceEvents.add(event.eventId) } }