Skip to content
Snippets Groups Projects
Commit 097b54b5 authored by Taras's avatar Taras
Browse files

Filter current user and default user

parent e60ef180
No related branches found
No related tags found
No related merge requests found
...@@ -10,7 +10,9 @@ import com.futo.circles.model.HeaderItem ...@@ -10,7 +10,9 @@ import com.futo.circles.model.HeaderItem
import com.futo.circles.model.InviteMemberListItem import com.futo.circles.model.InviteMemberListItem
import com.futo.circles.model.NoResultsItem import com.futo.circles.model.NoResultsItem
import com.futo.circles.provider.MatrixSessionProvider import com.futo.circles.provider.MatrixSessionProvider
import com.futo.circles.utils.DEFAULT_USER_PREFIX
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
import org.matrix.android.sdk.api.session.user.model.User import org.matrix.android.sdk.api.session.user.model.User
...@@ -22,12 +24,17 @@ class InviteMembersDataSource( ...@@ -22,12 +24,17 @@ class InviteMembersDataSource(
private val session = MatrixSessionProvider.currentSession private val session = MatrixSessionProvider.currentSession
private val room = session?.getRoom(roomId) private val room = session?.getRoom(roomId)
private val existingMembersIds = room?.roomSummary()?.otherMemberIds?.toSet().orEmpty() private val existingMembersIds = room?.roomSummary()?.otherMemberIds?.toMutableList()?.apply {
session?.myUserId?.let {
add(it)
add(DEFAULT_USER_PREFIX + it.substringAfter(":"))
}
}?.toSet().orEmpty()
val selectedUsersFlow = MutableStateFlow<List<CirclesUser>>(emptyList()) val selectedUsersFlow = MutableStateFlow<List<CirclesUser>>(emptyList())
fun getInviteTitle() = context.getString( fun getInviteTitle() = context.getString(
R.string.invite_members_to_format, R.string.invite_to_format,
room?.roomSummary()?.nameOrId() ?: roomId room?.roomSummary()?.nameOrId() ?: roomId
) )
...@@ -40,11 +47,12 @@ class InviteMembersDataSource( ...@@ -40,11 +47,12 @@ class InviteMembersDataSource(
private fun searchKnownUsers(query: String) = session?.getUsersLive()?.asFlow() private fun searchKnownUsers(query: String) = session?.getUsersLive()?.asFlow()
?.map { list -> ?.map { list ->
list.filter { user -> list.filterNot { user -> existingMembersIds.contains(user.userId) }
(user.displayName?.contains(query, true) ?: false .filter { user ->
|| user.userId.contains(query, true)) (user.displayName?.contains(query, true) ?: false
&& existingMembersIds.contains(user.userId).not() || user.userId.contains(query, true))
} && existingMembersIds.contains(user.userId).not()
}
} ?: flowOf() } ?: flowOf()
...@@ -67,7 +75,9 @@ class InviteMembersDataSource( ...@@ -67,7 +75,9 @@ class InviteMembersDataSource(
} }
val knowUsersIds = knowUsers.map { it.userId } val knowUsersIds = knowUsers.map { it.userId }
val filteredSuggestion = suggestions.filterNot { knowUsersIds.contains(it.userId) } val filteredSuggestion = suggestions.filterNot {
knowUsersIds.contains(it.userId) || existingMembersIds.contains(it.userId)
}
if (filteredSuggestion.isNotEmpty()) { if (filteredSuggestion.isNotEmpty()) {
list.add(HeaderItem.suggestionHeader) list.add(HeaderItem.suggestionHeader)
list.addAll(filteredSuggestion.map { suggestion -> list.addAll(filteredSuggestion.map { suggestion ->
...@@ -87,10 +97,25 @@ class InviteMembersDataSource( ...@@ -87,10 +97,25 @@ class InviteMembersDataSource(
selectedUsersFlow.value = list selectedUsersFlow.value = list
} }
suspend fun inviteUsers() {
selectedUsersFlow.value.asFlow().map {
inviteUser(it.id)
}.catch {
print(it.message)
}.collect {
print("collect")
}
}
private suspend fun inviteUser(userId: String) {
// room?.invite(userId, null)
delay(1000)
}
private fun List<CirclesUser>.containsWithId(id: String) = firstOrNull { it.id == id } != null private fun List<CirclesUser>.containsWithId(id: String) = firstOrNull { it.id == id } != null
private companion object { private companion object {
private const val MAX_SUGGESTION_COUNT = 25 private const val MAX_SUGGESTION_COUNT = 30
} }
} }
\ No newline at end of file
package com.futo.circles.utils package com.futo.circles.utils
const val GROUP_TAG = "group" const val GROUP_TAG = "group"
\ No newline at end of file const val DEFAULT_USER_PREFIX = "@notices:"
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment