forked from GitHub-Mirror/riotX-android
Fix / day separator flicker when adding reaction
When adding a reaction, the tmp local echo force the display of a new 'day separator' at the bottom if there was no new message for this day yet (then disappears just after -flicker-)
This commit is contained in:
parent
3fa9d7a1d4
commit
e3b9031e71
@ -21,11 +21,6 @@ import im.vector.matrix.android.api.MatrixCallback
|
|||||||
import im.vector.matrix.android.api.session.events.model.Event
|
import im.vector.matrix.android.api.session.events.model.Event
|
||||||
import im.vector.matrix.android.api.session.room.model.annotation.ReactionService
|
import im.vector.matrix.android.api.session.room.model.annotation.ReactionService
|
||||||
import im.vector.matrix.android.api.util.Cancelable
|
import im.vector.matrix.android.api.util.Cancelable
|
||||||
import im.vector.matrix.android.internal.database.helper.addSendingEvent
|
|
||||||
import im.vector.matrix.android.internal.database.model.ChunkEntity
|
|
||||||
import im.vector.matrix.android.internal.database.model.RoomEntity
|
|
||||||
import im.vector.matrix.android.internal.database.query.findLastLiveChunkFromRoom
|
|
||||||
import im.vector.matrix.android.internal.database.query.where
|
|
||||||
import im.vector.matrix.android.internal.session.room.send.LocalEchoEventFactory
|
import im.vector.matrix.android.internal.session.room.send.LocalEchoEventFactory
|
||||||
import im.vector.matrix.android.internal.session.room.send.RedactEventWorker
|
import im.vector.matrix.android.internal.session.room.send.RedactEventWorker
|
||||||
import im.vector.matrix.android.internal.session.room.send.SendEventWorker
|
import im.vector.matrix.android.internal.session.room.send.SendEventWorker
|
||||||
@ -33,7 +28,6 @@ import im.vector.matrix.android.internal.task.TaskExecutor
|
|||||||
import im.vector.matrix.android.internal.task.configureWith
|
import im.vector.matrix.android.internal.task.configureWith
|
||||||
import im.vector.matrix.android.internal.util.CancelableWork
|
import im.vector.matrix.android.internal.util.CancelableWork
|
||||||
import im.vector.matrix.android.internal.util.WorkerParamsFactory
|
import im.vector.matrix.android.internal.util.WorkerParamsFactory
|
||||||
import im.vector.matrix.android.internal.util.tryTransactionAsync
|
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
private const val REACTION_WORK = "REACTION_WORK"
|
private const val REACTION_WORK = "REACTION_WORK"
|
||||||
@ -52,9 +46,10 @@ internal class DefaultReactionService(private val roomId: String,
|
|||||||
|
|
||||||
|
|
||||||
override fun sendReaction(reaction: String, targetEventId: String): Cancelable {
|
override fun sendReaction(reaction: String, targetEventId: String): Cancelable {
|
||||||
val event = eventFactory.createReactionEvent(roomId, targetEventId, reaction).also {
|
val event = eventFactory.createReactionEvent(roomId, targetEventId, reaction)
|
||||||
saveLocalEcho(it)
|
// .also {
|
||||||
}
|
// //saveLocalEcho(it)
|
||||||
|
// }
|
||||||
val sendRelationWork = createSendRelationWork(event)
|
val sendRelationWork = createSendRelationWork(event)
|
||||||
WorkManager.getInstance()
|
WorkManager.getInstance()
|
||||||
.beginUniqueWork(buildWorkIdentifier(REACTION_WORK), ExistingWorkPolicy.APPEND, sendRelationWork)
|
.beginUniqueWork(buildWorkIdentifier(REACTION_WORK), ExistingWorkPolicy.APPEND, sendRelationWork)
|
||||||
@ -104,16 +99,16 @@ internal class DefaultReactionService(private val roomId: String,
|
|||||||
return "${roomId}_$identifier"
|
return "${roomId}_$identifier"
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveLocalEcho(event: Event) {
|
// private fun saveLocalEcho(event: Event) {
|
||||||
monarchy.tryTransactionAsync { realm ->
|
// monarchy.tryTransactionAsync { realm ->
|
||||||
val roomEntity = RoomEntity.where(realm, roomId = roomId).findFirst()
|
// val roomEntity = RoomEntity.where(realm, roomId = roomId).findFirst()
|
||||||
?: return@tryTransactionAsync
|
// ?: return@tryTransactionAsync
|
||||||
val liveChunk = ChunkEntity.findLastLiveChunkFromRoom(realm, roomId = roomId)
|
// val liveChunk = ChunkEntity.findLastLiveChunkFromRoom(realm, roomId = roomId)
|
||||||
?: return@tryTransactionAsync
|
// ?: return@tryTransactionAsync
|
||||||
|
//
|
||||||
roomEntity.addSendingEvent(event, liveChunk.forwardsStateIndex ?: 0)
|
// roomEntity.addSendingEvent(event, liveChunk.forwardsStateIndex ?: 0)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
//TODO duplicate with send service?
|
//TODO duplicate with send service?
|
||||||
private fun createRedactEventWork(eventId: String, reason: String?): OneTimeWorkRequest {
|
private fun createRedactEventWork(eventId: String, reason: String?): OneTimeWorkRequest {
|
||||||
|
Loading…
Reference in New Issue
Block a user