Add user completion for matrix ids (#8271)

This commit is contained in:
Yoan Pintas 2023-03-30 10:04:59 +02:00 committed by GitHub
parent 1227f048bb
commit ed121c051b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 17 additions and 7 deletions

1
changelog.d/8217.bugfix Normal file
View File

@ -0,0 +1 @@
Add user completion for matrix ids

View File

@ -30,7 +30,8 @@ data class RoomMemberQueryParams(
val displayName: QueryStringValue, val displayName: QueryStringValue,
val memberships: List<Membership>, val memberships: List<Membership>,
val userId: QueryStringValue, val userId: QueryStringValue,
val excludeSelf: Boolean val excludeSelf: Boolean,
val displayNameOrUserId: QueryStringValue,
) { ) {
class Builder { class Builder {
@ -39,12 +40,14 @@ data class RoomMemberQueryParams(
var displayName: QueryStringValue = QueryStringValue.IsNotEmpty var displayName: QueryStringValue = QueryStringValue.IsNotEmpty
var memberships: List<Membership> = Membership.all() var memberships: List<Membership> = Membership.all()
var excludeSelf: Boolean = false var excludeSelf: Boolean = false
var displayNameOrUserId: QueryStringValue = QueryStringValue.NoCondition
fun build() = RoomMemberQueryParams( fun build() = RoomMemberQueryParams(
displayName = displayName, displayName = displayName,
memberships = memberships, memberships = memberships,
userId = userId, userId = userId,
excludeSelf = excludeSelf excludeSelf = excludeSelf,
displayNameOrUserId = displayNameOrUserId
) )
} }
} }

View File

@ -17,14 +17,13 @@
package org.matrix.android.sdk.internal.session.room.membership package org.matrix.android.sdk.internal.session.room.membership
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import com.otaliastudios.opengl.core.use
import com.zhuinden.monarchy.Monarchy import com.zhuinden.monarchy.Monarchy
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
import io.realm.Realm import io.realm.Realm
import io.realm.RealmQuery import io.realm.RealmQuery
import org.matrix.android.sdk.api.MatrixConfiguration import org.matrix.android.sdk.api.query.QueryStringValue
import org.matrix.android.sdk.api.session.crypto.CryptoService import org.matrix.android.sdk.api.session.crypto.CryptoService
import org.matrix.android.sdk.api.session.identity.ThreePid import org.matrix.android.sdk.api.session.identity.ThreePid
import org.matrix.android.sdk.api.session.room.members.MembershipService import org.matrix.android.sdk.api.session.room.members.MembershipService
@ -58,7 +57,6 @@ internal class DefaultMembershipService @AssistedInject constructor(
private val cryptoService: CryptoService, private val cryptoService: CryptoService,
@UserId @UserId
private val userId: String, private val userId: String,
private val matrixConfiguration: MatrixConfiguration,
private val queryStringValueProcessor: QueryStringValueProcessor private val queryStringValueProcessor: QueryStringValueProcessor
) : MembershipService { ) : MembershipService {
@ -120,6 +118,13 @@ internal class DefaultMembershipService @AssistedInject constructor(
if (queryParams.excludeSelf) { if (queryParams.excludeSelf) {
notEqualTo(RoomMemberSummaryEntityFields.USER_ID, userId) notEqualTo(RoomMemberSummaryEntityFields.USER_ID, userId)
} }
if (queryParams.displayNameOrUserId != QueryStringValue.NoCondition) {
beginGroup()
process(RoomMemberSummaryEntityFields.USER_ID, queryParams.displayNameOrUserId)
or()
process(RoomMemberSummaryEntityFields.DISPLAY_NAME, queryParams.displayNameOrUserId)
endGroup()
}
} }
} }
} }

View File

@ -76,6 +76,7 @@ class AutocompleteMemberController @Inject constructor(private val context: Cont
roomMember.roomMemberSummary.let { user -> roomMember.roomMemberSummary.let { user ->
id(user.userId) id(user.userId)
matrixItem(user.toMatrixItem()) matrixItem(user.toMatrixItem())
subName(user.userId)
avatarRenderer(host.avatarRenderer) avatarRenderer(host.avatarRenderer)
clickListener { host.listener?.onItemClick(roomMember) } clickListener { host.listener?.onItemClick(roomMember) }
} }

View File

@ -112,8 +112,8 @@ class AutocompleteMemberPresenter @AssistedInject constructor(
* ========================================================================================== */ * ========================================================================================== */
private fun createQueryParams(query: CharSequence?) = roomMemberQueryParams { private fun createQueryParams(query: CharSequence?) = roomMemberQueryParams {
displayName = if (query.isNullOrBlank()) { displayNameOrUserId = if (query.isNullOrBlank()) {
QueryStringValue.IsNotEmpty QueryStringValue.NoCondition
} else { } else {
QueryStringValue.Contains(query.toString(), QueryStringValue.Case.INSENSITIVE) QueryStringValue.Contains(query.toString(), QueryStringValue.Case.INSENSITIVE)
} }