@@ -24,6 +24,7 @@ import android.os.Bundle
2424import android.view.LayoutInflater
2525import android.view.View
2626import android.view.ViewGroup
27+ import androidx.core.view.isVisible
2728import androidx.fragment.app.Fragment
2829import androidx.recyclerview.widget.LinearLayoutManager
2930import androidx.recyclerview.widget.RecyclerView
@@ -33,7 +34,6 @@ import com.owncloud.android.domain.spaces.model.OCSpace
3334import com.owncloud.android.domain.spaces.model.SpaceMember
3435import com.owncloud.android.extensions.collectLatestLifecycleFlow
3536import com.owncloud.android.extensions.showErrorInSnackbar
36- import com.owncloud.android.presentation.common.UIResult
3737import org.koin.androidx.viewmodel.ext.android.viewModel
3838import org.koin.core.parameter.parametersOf
3939import timber.log.Timber
@@ -68,24 +68,17 @@ class AddMemberFragment: Fragment() {
6868
6969 val spaceMembers = requireArguments().getParcelableArrayList<SpaceMember >(ARG_SPACE_MEMBERS ) ? : arrayListOf ()
7070
71- collectLatestLifecycleFlow(spaceMembersViewModel.members) { event ->
72- event?.let {
73- when (val uiResult = event.peekContent()) {
74- is UIResult .Success -> {
75- uiResult.data?.let { listOfMembers ->
76- val listOfMembersFiltered = listOfMembers.filter { member ->
77- ! spaceMembers.any { spaceMember ->
78- spaceMember.id == " u:${member.id} " || spaceMember.id == " g:${member.id} " }
79- }
80- searchMembersAdapter.setMembers(listOfMembersFiltered)
81- }
82- }
83- is UIResult .Loading -> { }
84- is UIResult .Error -> {
85- Timber .e(uiResult.error, " Failed to retrieve available users and groups" )
86- showErrorInSnackbar(R .string.members_search_failed, uiResult.error)
87- }
88- }
71+ collectLatestLifecycleFlow(spaceMembersViewModel.members) { uiState ->
72+ val listOfMembersFiltered = uiState.members.filter { member ->
73+ ! spaceMembers.any { spaceMember ->
74+ spaceMember.id == " u:${member.id} " || spaceMember.id == " g:${member.id} " }
75+ }
76+ val hasMembers = listOfMembersFiltered.isNotEmpty()
77+ showOrHideEmptyView(hasMembers)
78+ if (hasMembers) searchMembersAdapter.setMembers(listOfMembersFiltered)
79+ uiState.error?.let {
80+ Timber .e(uiState.error, " Failed to retrieve available users and groups" )
81+ showErrorInSnackbar(R .string.members_search_failed, uiState.error)
8982 }
9083 }
9184
@@ -102,6 +95,19 @@ class AddMemberFragment: Fragment() {
10295 }
10396 }
10497
98+ private fun showOrHideEmptyView (hasMembers : Boolean ) {
99+ binding.membersRecyclerView.isVisible = hasMembers
100+ binding.emptyDataParent.apply {
101+ val shouldShow = ! hasMembers && binding.searchBar.query.length > 2
102+ root.isVisible = shouldShow
103+ if (shouldShow) {
104+ listEmptyDatasetIcon.setImageResource(R .drawable.ic_share_generic_white)
105+ listEmptyDatasetTitle.setText(R .string.members_search_failed)
106+ listEmptyDatasetSubTitle.setText(R .string.members_search_empty)
107+ }
108+ }
109+ }
110+
105111 override fun onActivityCreated (savedInstanceState : Bundle ? ) {
106112 super .onActivityCreated(savedInstanceState)
107113 requireActivity().setTitle(R .string.members_add)
0 commit comments