mirror of
https://github.com/element-hq/element-android
synced 2024-11-27 20:06:51 +03:00
Merge pull request #7808 from vector-im/feature/bma/ignoreTyping
No typing for ignored user
This commit is contained in:
commit
ed6b2e3846
2 changed files with 10 additions and 1 deletions
1
changelog.d/2965.bugfix
Normal file
1
changelog.d/2965.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Do not show typing notification of ignored users.
|
|
@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.session.sync.handler.room
|
|||
|
||||
import io.realm.Realm
|
||||
import org.matrix.android.sdk.api.session.room.sender.SenderInfo
|
||||
import org.matrix.android.sdk.internal.database.model.IgnoredUserEntity
|
||||
import org.matrix.android.sdk.internal.di.UserId
|
||||
import org.matrix.android.sdk.internal.session.room.membership.RoomMemberHelper
|
||||
import org.matrix.android.sdk.internal.session.typing.DefaultTypingUsersTracker
|
||||
|
@ -30,8 +31,15 @@ internal class RoomTypingUsersHandler @Inject constructor(
|
|||
|
||||
// TODO This could be handled outside of the Realm transaction. Use the new aggregator?
|
||||
fun handle(realm: Realm, roomId: String, ephemeralResult: RoomSyncHandler.EphemeralResult?) {
|
||||
val typingUserIds = ephemeralResult?.typingUserIds
|
||||
if (typingUserIds.isNullOrEmpty()) {
|
||||
typingUsersTracker.setTypingUsersFromRoom(roomId, emptyList())
|
||||
return
|
||||
}
|
||||
// Filter ignored users and current user
|
||||
val filteredUserIds = realm.where(IgnoredUserEntity::class.java).findAll().map { it.userId } + userId
|
||||
val roomMemberHelper = RoomMemberHelper(realm, roomId)
|
||||
val typingIds = ephemeralResult?.typingUserIds?.filter { it != userId }.orEmpty()
|
||||
val typingIds = typingUserIds.filter { it !in filteredUserIds }
|
||||
val senderInfo = typingIds.map { userId ->
|
||||
val roomMemberSummaryEntity = roomMemberHelper.getLastRoomMember(userId)
|
||||
SenderInfo(
|
||||
|
|
Loading…
Reference in a new issue