Merge pull request #7808 from vector-im/feature/bma/ignoreTyping
No typing for ignored user
This commit is contained in:
		
						commit
						ed6b2e3846
					
				
							
								
								
									
										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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user