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 821ca5a2ac88f99b2c18e3922ac4be5f7cd33cdb..4f96d07f66db2f4d6b32a15bf89189651a56f1ee 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 e6652582e041c91fb92806e0cca1e98c0e1d92ca..7b604713af9e614c177a4945dfe0a13f9f535beb 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)