Merge pull request #632 from vector-im/feature/cleanuo

More cleanup
This commit is contained in:
Benoit Marty 2019-10-23 10:26:54 +02:00 committed by GitHub
commit 02914495ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 31 deletions

View File

@ -19,7 +19,5 @@ package im.vector.matrix.android.internal.extensions
import io.realm.RealmObject import io.realm.RealmObject
internal fun RealmObject.assertIsManaged() { internal fun RealmObject.assertIsManaged() {
if (!isManaged) { check(isManaged) { "${javaClass.simpleName} entity should be managed to use this function" }
throw IllegalStateException("${javaClass.simpleName} entity should be managed to use this function")
}
} }

View File

@ -32,10 +32,8 @@ import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
import im.vector.matrix.android.api.util.Cancelable import im.vector.matrix.android.api.util.Cancelable
import im.vector.matrix.android.api.util.Optional import im.vector.matrix.android.api.util.Optional
import im.vector.matrix.android.api.util.toOptional import im.vector.matrix.android.api.util.toOptional
import im.vector.matrix.android.internal.database.helper.addSendingEvent
import im.vector.matrix.android.internal.database.mapper.asDomain import im.vector.matrix.android.internal.database.mapper.asDomain
import im.vector.matrix.android.internal.database.model.EventAnnotationsSummaryEntity import im.vector.matrix.android.internal.database.model.EventAnnotationsSummaryEntity
import im.vector.matrix.android.internal.database.model.RoomEntity
import im.vector.matrix.android.internal.database.query.where import im.vector.matrix.android.internal.database.query.where
import im.vector.matrix.android.internal.di.UserId import im.vector.matrix.android.internal.di.UserId
import im.vector.matrix.android.internal.session.room.send.EncryptEventWorker import im.vector.matrix.android.internal.session.room.send.EncryptEventWorker
@ -67,9 +65,7 @@ internal class DefaultRelationService @AssistedInject constructor(@Assisted priv
override fun sendReaction(targetEventId: String, reaction: String): Cancelable { override fun sendReaction(targetEventId: String, reaction: String): Cancelable {
val event = eventFactory.createReactionEvent(roomId, targetEventId, reaction) val event = eventFactory.createReactionEvent(roomId, targetEventId, reaction)
.also { .also { saveLocalEcho(it) }
saveLocalEcho(it)
}
val sendRelationWork = createSendEventWork(event, true) val sendRelationWork = createSendEventWork(event, true)
TimelineSendEventWorkCommon.postWork(context, roomId, sendRelationWork) TimelineSendEventWorkCommon.postWork(context, roomId, sendRelationWork)
return CancelableWork(context, sendRelationWork.id) return CancelableWork(context, sendRelationWork.id)
@ -89,9 +85,8 @@ internal class DefaultRelationService @AssistedInject constructor(@Assisted priv
// TODO? // TODO?
} }
data.redactEventId?.let { toRedact -> data.redactEventId?.let { toRedact ->
val redactEvent = eventFactory.createRedactEvent(roomId, toRedact, null).also { val redactEvent = eventFactory.createRedactEvent(roomId, toRedact, null)
saveLocalEcho(it) .also { saveLocalEcho(it) }
}
val redactWork = createRedactEventWork(redactEvent, toRedact, null) val redactWork = createRedactEventWork(redactEvent, toRedact, null)
TimelineSendEventWorkCommon.postWork(context, roomId, redactWork) TimelineSendEventWorkCommon.postWork(context, roomId, redactWork)
@ -125,9 +120,7 @@ internal class DefaultRelationService @AssistedInject constructor(@Assisted priv
compatibilityBodyText: String): Cancelable { compatibilityBodyText: String): Cancelable {
val event = eventFactory val event = eventFactory
.createReplaceTextEvent(roomId, targetEventId, newBodyText, newBodyAutoMarkdown, msgType, compatibilityBodyText) .createReplaceTextEvent(roomId, targetEventId, newBodyText, newBodyAutoMarkdown, msgType, compatibilityBodyText)
.also { .also { saveLocalEcho(it) }
saveLocalEcho(it)
}
return if (cryptoService.isRoomEncrypted(roomId)) { return if (cryptoService.isRoomEncrypted(roomId)) {
val encryptWork = createEncryptEventWork(event, listOf("m.relates_to")) val encryptWork = createEncryptEventWork(event, listOf("m.relates_to"))
val workRequest = createSendEventWork(event, false) val workRequest = createSendEventWork(event, false)
@ -149,9 +142,7 @@ internal class DefaultRelationService @AssistedInject constructor(@Assisted priv
replyToEdit, replyToEdit,
originalTimelineEvent, originalTimelineEvent,
newBodyText, true, MessageType.MSGTYPE_TEXT, compatibilityBodyText) newBodyText, true, MessageType.MSGTYPE_TEXT, compatibilityBodyText)
.also { .also { saveLocalEcho(it) }
saveLocalEcho(it)
}
return if (cryptoService.isRoomEncrypted(roomId)) { return if (cryptoService.isRoomEncrypted(roomId)) {
val encryptWork = createEncryptEventWork(event, listOf("m.relates_to")) val encryptWork = createEncryptEventWork(event, listOf("m.relates_to"))
val workRequest = createSendEventWork(event, false) val workRequest = createSendEventWork(event, false)
@ -174,9 +165,9 @@ internal class DefaultRelationService @AssistedInject constructor(@Assisted priv
} }
override fun replyToMessage(eventReplied: TimelineEvent, replyText: String, autoMarkdown: Boolean): Cancelable? { override fun replyToMessage(eventReplied: TimelineEvent, replyText: String, autoMarkdown: Boolean): Cancelable? {
val event = eventFactory.createReplyTextEvent(roomId, eventReplied, replyText, autoMarkdown)?.also { val event = eventFactory.createReplyTextEvent(roomId, eventReplied, replyText, autoMarkdown)
saveLocalEcho(it) ?.also { saveLocalEcho(it) }
} ?: return null ?: return null
return if (cryptoService.isRoomEncrypted(roomId)) { return if (cryptoService.isRoomEncrypted(roomId)) {
val encryptWork = createEncryptEventWork(event, listOf("m.relates_to")) val encryptWork = createEncryptEventWork(event, listOf("m.relates_to"))
@ -220,10 +211,6 @@ internal class DefaultRelationService @AssistedInject constructor(@Assisted priv
* the same transaction id is received (in unsigned data) * the same transaction id is received (in unsigned data)
*/ */
private fun saveLocalEcho(event: Event) { private fun saveLocalEcho(event: Event) {
monarchy.writeAsync { realm -> eventFactory.saveLocalEcho(monarchy, event)
val roomEntity = RoomEntity.where(realm, roomId = roomId).findFirst()
?: return@writeAsync
roomEntity.addSendingEvent(event)
}
} }
} }

View File

@ -26,7 +26,6 @@ import im.vector.matrix.android.api.util.ContentUtils.extractUsefulTextFromReply
*/ */
data class TextContent( data class TextContent(
val text: String, val text: String,
val formattedText: String? = null val formattedText: String? = null
) { ) {
fun takeFormatted() = formattedText ?: text fun takeFormatted() = formattedText ?: text

View File

@ -39,8 +39,8 @@ internal class TimelineEventDecryptor(
override fun onNewSession(roomId: String?, senderKey: String, sessionId: String) { override fun onNewSession(roomId: String?, senderKey: String, sessionId: String) {
synchronized(unknownSessionsFailure) { synchronized(unknownSessionsFailure) {
unknownSessionsFailure[sessionId] unknownSessionsFailure[sessionId]
?.toList()
.orEmpty() .orEmpty()
.toList()
.also { .also {
unknownSessionsFailure[sessionId]?.clear() unknownSessionsFailure[sessionId]?.clear()
} }
@ -55,7 +55,7 @@ internal class TimelineEventDecryptor(
// Set of eventIds which are currently decrypting // Set of eventIds which are currently decrypting
private val existingRequests = mutableSetOf<String>() private val existingRequests = mutableSetOf<String>()
// sessionId -> list of eventIds // sessionId -> list of eventIds
private val unknownSessionsFailure = mutableMapOf<String, MutableList<String>>() private val unknownSessionsFailure = mutableMapOf<String, MutableSet<String>>()
fun start() { fun start() {
executor = Executors.newSingleThreadExecutor() executor = Executors.newSingleThreadExecutor()
@ -84,11 +84,10 @@ internal class TimelineEventDecryptor(
} }
} }
synchronized(existingRequests) { synchronized(existingRequests) {
if (eventId in existingRequests) { if (!existingRequests.add(eventId)) {
Timber.d("Skip Decryption request for event $eventId, already requested") Timber.d("Skip Decryption request for event $eventId, already requested")
return return
} }
existingRequests.add(eventId)
} }
executor?.execute { executor?.execute {
Realm.getInstance(realmConfiguration).use { realm -> Realm.getInstance(realmConfiguration).use { realm ->
@ -120,7 +119,7 @@ internal class TimelineEventDecryptor(
event.content?.toModel<EncryptedEventContent>()?.let { content -> event.content?.toModel<EncryptedEventContent>()?.let { content ->
content.sessionId?.let { sessionId -> content.sessionId?.let { sessionId ->
synchronized(unknownSessionsFailure) { synchronized(unknownSessionsFailure) {
val list = unknownSessionsFailure.getOrPut(sessionId) { ArrayList() } val list = unknownSessionsFailure.getOrPut(sessionId) { mutableSetOf() }
list.add(eventId) list.add(eventId)
} }
} }

View File

@ -156,3 +156,6 @@ Formatter\.formatFileSize===1
### Use TextUtils.formatFileSize with short format param to true ### Use TextUtils.formatFileSize with short format param to true
Formatter\.formatShortFileSize===1 Formatter\.formatShortFileSize===1
### Use kotlin stdlib to test or compare strings
android\.text\.TextUtils