From 1a8f94b657d08d9da6d6186151e6ba078aa2b017 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Wed, 20 Dec 2023 17:56:23 +0200 Subject: [PATCH] Remove ignored users section from people tab --- .../feature/people/PeopleDataSource.kt | 14 ++---------- .../circles/feature/people/PeopleFragment.kt | 4 +--- .../circles/feature/people/PeopleViewModel.kt | 11 +--------- .../feature/people/list/PeopleAdapter.kt | 5 ----- .../feature/people/list/PeopleViewHolder.kt | 22 ------------------- .../org/futo/circles/model/PeopleListItem.kt | 3 +-- app/src/main/res/values/strings.xml | 1 + .../circles/core/model/CirclesUserSummary.kt | 6 +++-- 8 files changed, 10 insertions(+), 56 deletions(-) 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 73333a296..7fec6884b 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 8668bf14d..e7f00d0dc 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 d1e1650ba..05778b561 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 96b8393fb..85dd3d510 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 22a0645f6..3103bbda4 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 fc79e221d..1f0874b7d 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 5dfcf491c..d0abb5e2f 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 807e84f64..4ab5db57c 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 -- GitLab