@@ -32,6 +32,7 @@ import com.owncloud.android.R
3232import com.owncloud.android.databinding.AddMemberFragmentBinding
3333import com.owncloud.android.domain.files.model.OCFile
3434import com.owncloud.android.domain.members.model.OCMember
35+ import com.owncloud.android.domain.sharing.shares.model.MemberPermission
3536import com.owncloud.android.presentation.common.UIResult
3637import com.owncloud.android.domain.roles.model.OCRole
3738import com.owncloud.android.extensions.bindDatePickerDialog
@@ -62,8 +63,9 @@ class AddGraphShareFragment : Fragment(), SearchMembersAdapter.SearchMembersAdap
6263 private lateinit var searchMembersAdapter: SearchMembersAdapter
6364 private lateinit var rolesAdapter: SpaceRolesAdapter
6465 private lateinit var recyclerView: RecyclerView
65- private lateinit var roles: List <OCRole >
6666
67+ private var roles: List <OCRole > = emptyList()
68+ private var currentShares: List <MemberPermission > = emptyList()
6769 private var searchMinLength = DEFAULT_SEARCH_MIN_LENGTH
6870 private var currentUserId: String? = null
6971
@@ -86,8 +88,6 @@ class AddGraphShareFragment : Fragment(), SearchMembersAdapter.SearchMembersAdap
8688 adapter = searchMembersAdapter
8789 }
8890
89- subscribeToViewModels()
90-
9191 rolesAdapter = SpaceRolesAdapter (onRoleSelected = {
9292 binding.inviteMemberButton.isEnabled = true
9393 graphShareViewModel.onRoleSelected(it)
@@ -98,6 +98,8 @@ class AddGraphShareFragment : Fragment(), SearchMembersAdapter.SearchMembersAdap
9898 }
9999 rolesAdapter.setRoles(roles)
100100
101+ subscribeToViewModels()
102+
101103 binding.searchBar.apply {
102104 if (savedInstanceState == null ) { requestFocus() }
103105 setOnQueryTextListener(object : SearchView .OnQueryTextListener {
@@ -120,9 +122,6 @@ class AddGraphShareFragment : Fragment(), SearchMembersAdapter.SearchMembersAdap
120122 }
121123
122124 private fun subscribeToViewModels () {
123- val currentPermissions = (graphShareViewModel.shares.value?.peekContent() as ? UIResult .Success )?.data
124- roles = currentPermissions?.roles ? : emptyList()
125- val currentShares = currentPermissions?.members ? : emptyList()
126125 searchMinLength = graphShareViewModel.capabilities?.filesSharingSearchMinLength ? : DEFAULT_SEARCH_MIN_LENGTH
127126
128127 collectLatestLifecycleFlow(graphShareViewModel.userId) { event ->
@@ -139,6 +138,24 @@ class AddGraphShareFragment : Fragment(), SearchMembersAdapter.SearchMembersAdap
139138 }
140139 }
141140
141+ collectLatestLifecycleFlow(graphShareViewModel.shares) { event ->
142+ event?.let {
143+ when (val uiResult = event.peekContent()) {
144+ is UIResult .Success -> {
145+ uiResult.data?.let {
146+ roles = it.roles
147+ currentShares = it.members
148+ rolesAdapter.setRoles(roles)
149+ }
150+ }
151+ is UIResult .Loading -> { }
152+ is UIResult .Error -> {
153+ Timber .e(uiResult.error, " Failed to retrieve shares" )
154+ }
155+ }
156+ }
157+ }
158+
142159 collectLatestLifecycleFlow(graphShareViewModel.members) { uiState ->
143160 if (uiState.isLoading) {
144161 binding.indeterminateProgressBar.visibility = View .VISIBLE
0 commit comments