diff --git a/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt b/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt index 73333a296aa4169bec753ebea3718c58e03209a2..7fec6884b6de1836424b3bf7fd861ef5d29fea60 100644 --- a/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt +++ b/app/src/main/java/org/futo/circles/feature/people/PeopleDataSource.kt @@ -45,27 +45,21 @@ class PeopleDataSource @Inject constructor( suspend fun getPeopleList(query: String) = combine( searchUserDataSource.searchKnownUsers(query), searchUserDataSource.searchSuggestions(query), - getIgnoredUserFlow(), getProfileRoomMembersKnockFlow() - ) { knowUsers, suggestions, ignoredUsers, requests -> - withContext(Dispatchers.IO) { buildList(knowUsers, suggestions, ignoredUsers, requests) } + ) { knowUsers, suggestions, requests -> + withContext(Dispatchers.IO) { buildList(knowUsers, suggestions, requests) } }.distinctUntilChanged() suspend fun refreshRoomMembers() { searchUserDataSource.loadAllRoomMembersIfNeeded() } - private fun getIgnoredUserFlow() = - session?.userService()?.getIgnoredUsersLive()?.asFlow() ?: flowOf() - private fun buildList( knowUsers: List<User>, suggestions: List<User>, - ignoredUsers: List<User>, requests: List<KnockRequestListItem> ): List<PeopleListItem> { val uniqueItemsList = mutableListOf<PeopleListItem>().apply { - addAll(ignoredUsers.map { it.toPeopleUserListItem(PeopleItemType.Ignored) }) addAll(requests.map { it.toPeopleRequestListItem() }) addAll(knowUsers.map { it.toPeopleUserListItem(getKnownUserItemType(it.userId)) }) addAll(suggestions.map { it.toPeopleUserListItem(PeopleItemType.Suggestion) }) @@ -96,10 +90,6 @@ class PeopleDataSource @Inject constructor( PeopleHeaderItem.suggestions, uniqueItemsList.filter { it.type == PeopleItemType.Suggestion } ) - addSection( - PeopleHeaderItem.ignoredUsers, - uniqueItemsList.filter { it.type == PeopleItemType.Ignored } - ) } } diff --git a/app/src/main/java/org/futo/circles/feature/people/PeopleFragment.kt b/app/src/main/java/org/futo/circles/feature/people/PeopleFragment.kt index 8668bf14df025eb214f9fce5fe3a93c595ee8365..e7f00d0dc43835c45863fd153d760da5b092f9d2 100644 --- a/app/src/main/java/org/futo/circles/feature/people/PeopleFragment.kt +++ b/app/src/main/java/org/futo/circles/feature/people/PeopleFragment.kt @@ -38,8 +38,7 @@ class PeopleFragment : Fragment(R.layout.fragment_people), MenuProvider { onRequestClicked = { userId, isAccepted -> if (showNoInternetConnection()) return@PeopleAdapter viewModel.onFollowRequestAnswered(userId, isAccepted) - }, - onUnIgnore = { userId -> viewModel.unIgnoreUser(userId) } + } ) } @@ -78,7 +77,6 @@ class PeopleFragment : Fragment(R.layout.fragment_people), MenuProvider { } viewModel.followUserLiveData.observeResponse(this, success = { showSuccess(getString(R.string.request_sent)) }) - viewModel.unIgnoreUserLiveData.observeResponse(this) viewModel.followUserRequestLiveData.observeResponse(this) } diff --git a/app/src/main/java/org/futo/circles/feature/people/PeopleViewModel.kt b/app/src/main/java/org/futo/circles/feature/people/PeopleViewModel.kt index d1e1650ba447af90e21c7d5cb78de6f2cf220c2c..05778b5610e9dab7197e3fe9abae673603d78bd3 100644 --- a/app/src/main/java/org/futo/circles/feature/people/PeopleViewModel.kt +++ b/app/src/main/java/org/futo/circles/feature/people/PeopleViewModel.kt @@ -15,13 +15,11 @@ import javax.inject.Inject @HiltViewModel class PeopleViewModel @Inject constructor( - private val peopleDataSource: PeopleDataSource, - private val userOptionsDataSource: UserOptionsDataSource + private val peopleDataSource: PeopleDataSource ) : ViewModel() { val peopleLiveData = MutableLiveData<List<PeopleListItem>>() val followUserLiveData = SingleEventLiveData<Response<Unit?>>() - val unIgnoreUserLiveData = SingleEventLiveData<Response<Unit?>>() val followUserRequestLiveData = SingleEventLiveData<Response<Unit?>>() init { @@ -36,18 +34,11 @@ class PeopleViewModel @Inject constructor( } } - fun unIgnoreUser(userId: String) { - launchBg { - unIgnoreUserLiveData.postValue(userOptionsDataSource.unIgnoreSender(userId)) - } - } - fun onFollowRequestAnswered(userId: String, accepted: Boolean) { launchBg { val result = if (accepted) peopleDataSource.acceptFollowRequest(userId) else peopleDataSource.declineFollowRequest(userId) followUserRequestLiveData.postValue(result) } - } } \ No newline at end of file diff --git a/app/src/main/java/org/futo/circles/feature/people/list/PeopleAdapter.kt b/app/src/main/java/org/futo/circles/feature/people/list/PeopleAdapter.kt index 96b8393fb2c3995b333aadd67e70e4cd4e47bc9a..85dd3d510a0046de31fb1638f4a9a7625089b270 100644 --- a/app/src/main/java/org/futo/circles/feature/people/list/PeopleAdapter.kt +++ b/app/src/main/java/org/futo/circles/feature/people/list/PeopleAdapter.kt @@ -9,7 +9,6 @@ import org.futo.circles.model.PeopleUserListItemPayload class PeopleAdapter( private val onUserClicked: (String) -> Unit, - private val onUnIgnore: (String) -> Unit, private val onRequestClicked: (String, Boolean) -> Unit ) : BaseRvAdapter<PeopleListItem, PeopleViewHolder>(PayloadIdEntityCallback { old, new -> if (new is PeopleUserListItem && old is PeopleUserListItem) { @@ -28,10 +27,6 @@ class PeopleAdapter( onRequestClicked(getItem(position).id, isAccepted) } ) - PeopleItemType.Ignored -> PeopleIgnoredUserViewHolder( - parent, - onUnIgnore = { position -> onUnIgnore(getItem(position).id) } - ) else -> PeopleDefaultUserViewHolder( parent, onUserClicked = { position -> onUserClicked(getItem(position).id) } diff --git a/app/src/main/java/org/futo/circles/feature/people/list/PeopleViewHolder.kt b/app/src/main/java/org/futo/circles/feature/people/list/PeopleViewHolder.kt index 22a0645f64de68e8450517de045843a24157d51b..3103bbda42ffb2391659ceb8915849cf1cd65cc3 100644 --- a/app/src/main/java/org/futo/circles/feature/people/list/PeopleViewHolder.kt +++ b/app/src/main/java/org/futo/circles/feature/people/list/PeopleViewHolder.kt @@ -24,28 +24,6 @@ abstract class PeopleViewHolder(view: View) : RecyclerView.ViewHolder(view) { open fun bindPayload(data: PeopleUserListItemPayload) {} } -class PeopleIgnoredUserViewHolder( - parent: ViewGroup, - private val onUnIgnore: (Int) -> Unit -) : PeopleViewHolder(inflate(parent, ListItemPeopleIgnoredBinding::inflate)) { - - private companion object : ViewBindingHolder - - private val binding = baseBinding as ListItemPeopleIgnoredBinding - - init { - onClick(binding.btnUnIgnore) { position -> onUnIgnore(position) } - } - - override fun bind(data: PeopleListItem) { - (data as? PeopleUserListItem)?.let { binding.userItem.bind(it.user) } - } - - override fun bindPayload(data: PeopleUserListItemPayload) { - data.user?.let { binding.userItem.bind(it) } - } -} - class PeopleDefaultUserViewHolder( parent: ViewGroup, private val onUserClicked: (Int) -> Unit diff --git a/app/src/main/java/org/futo/circles/model/PeopleListItem.kt b/app/src/main/java/org/futo/circles/model/PeopleListItem.kt index fc79e221d6adfec8da216c98020e95d2a4af243b..1f0874b7d1503e7daf8e3d0ab404ea8c5b0a748c 100644 --- a/app/src/main/java/org/futo/circles/model/PeopleListItem.kt +++ b/app/src/main/java/org/futo/circles/model/PeopleListItem.kt @@ -6,7 +6,7 @@ import org.futo.circles.core.model.CirclesUserSummary import org.futo.circles.core.model.KnockRequestListItem import org.futo.circles.core.model.toCircleUser -enum class PeopleItemType { Header, Friend, Following, Follower, Request, Known, Suggestion, Ignored } +enum class PeopleItemType { Header, Friend, Following, Follower, Request, Known, Suggestion } sealed class PeopleListItem( open val type: PeopleItemType ) : IdEntity<String> @@ -23,7 +23,6 @@ data class PeopleHeaderItem( val knownUsersHeader = PeopleHeaderItem(R.string.known_users) val suggestions = PeopleHeaderItem(R.string.suggestions) val requests = PeopleHeaderItem(R.string.requests) - val ignoredUsers = PeopleHeaderItem(R.string.ignored_users) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5dfcf491c1f8d71fc505bea2309035b7d2809469..d0abb5e2f4988f306cd57ef40d50ac0453c6b44f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -204,6 +204,7 @@ <string name="groups_empty_message">Create your first Group</string> <string name="circles_empty_message">Create your first Circle</string> <string name="people_empty_message">Members of Circles and Groups you are joined will be shown here</string> + <string name="ignored_users_empty_message">Ignored users will be shown here</string> <string name="creating_timeline">Creating timeline</string> <string name="group_topic_optional">Group topic (optional)</string> <string name="session">Session</string> diff --git a/core/src/main/java/org/futo/circles/core/model/CirclesUserSummary.kt b/core/src/main/java/org/futo/circles/core/model/CirclesUserSummary.kt index 807e84f64fc0cdd6e49e739776e43d68406fc4b9..4ab5db57c26108dd2638cc7816ec2277d597432a 100644 --- a/core/src/main/java/org/futo/circles/core/model/CirclesUserSummary.kt +++ b/core/src/main/java/org/futo/circles/core/model/CirclesUserSummary.kt @@ -1,7 +1,9 @@ package org.futo.circles.core.model +import org.futo.circles.core.base.list.IdEntity + data class CirclesUserSummary( - val id: String, + override val id: String, val name: String, val avatarUrl: String -) \ No newline at end of file +) : IdEntity<String> \ No newline at end of file