From 7ac27c7d7789d8e0dda018168958cf320449bcd4 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Wed, 27 Sep 2023 15:54:22 +0300 Subject: [PATCH] Fix system notices in known users --- .../circles/core/extensions/MatrixSessionExtensions.kt | 7 ++++++- .../circles/core/select_users/SelectUsersDataSource.kt | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/futo/circles/core/extensions/MatrixSessionExtensions.kt b/core/src/main/java/org/futo/circles/core/extensions/MatrixSessionExtensions.kt index 821ca5a2a..4f96d07f6 100644 --- a/core/src/main/java/org/futo/circles/core/extensions/MatrixSessionExtensions.kt +++ b/core/src/main/java/org/futo/circles/core/extensions/MatrixSessionExtensions.kt @@ -40,6 +40,11 @@ fun Session.resolveUrl( } } +fun Session.getUserIdsToExclude() = mutableListOf( + myUserId, + "@notices:" + getServerDomain() +).toSet() + fun Session.getServerDomain() = myUserId.substringAfter(":") fun Session.getKnownUsersFlow() = @@ -49,7 +54,7 @@ fun Session.getKnownUsersFlow() = roomSummaries.forEach { summary -> summary.otherMemberIds.forEach { knowUsers.add(getOrFetchUser(it)) } } - knowUsers.toList().filterNot { it.userId == myUserId } + knowUsers.toList().filterNot { getUserIdsToExclude().contains(it.userId) } } suspend fun Session.getOrFetchUser(userId: String): User = diff --git a/core/src/main/java/org/futo/circles/core/select_users/SelectUsersDataSource.kt b/core/src/main/java/org/futo/circles/core/select_users/SelectUsersDataSource.kt index e6652582e..7b604713a 100644 --- a/core/src/main/java/org/futo/circles/core/select_users/SelectUsersDataSource.kt +++ b/core/src/main/java/org/futo/circles/core/select_users/SelectUsersDataSource.kt @@ -7,6 +7,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.flowOn +import org.futo.circles.core.extensions.getUserIdsToExclude import org.futo.circles.core.mapping.toUserListItem import org.futo.circles.core.model.CirclesUserSummary import org.futo.circles.core.model.HeaderItem @@ -33,7 +34,7 @@ class SelectUsersDataSource @Inject constructor( private val room = session?.getRoom(roomId ?: "") private val existingMembersIds = mutableListOf<String>().apply { - session?.myUserId?.let { add(it)} + addAll(session?.getUserIdsToExclude() ?: emptySet()) addAll(room?.membershipService()?.getRoomMembers( roomMemberQueryParams { memberships = listOf(Membership.JOIN, Membership.INVITE, Membership.BAN) -- GitLab