Skip to content

Commit cfebe81

Browse files
committed
fix: collect roles and current shares asynchronously when adding a share
Signed-off-by: Jorge Aguado Recio <jaguado@izertis.com>
1 parent b5abce5 commit cfebe81

1 file changed

Lines changed: 23 additions & 6 deletions

File tree

owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/AddGraphShareFragment.kt

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.owncloud.android.R
3232
import com.owncloud.android.databinding.AddMemberFragmentBinding
3333
import com.owncloud.android.domain.files.model.OCFile
3434
import com.owncloud.android.domain.members.model.OCMember
35+
import com.owncloud.android.domain.sharing.shares.model.MemberPermission
3536
import com.owncloud.android.presentation.common.UIResult
3637
import com.owncloud.android.domain.roles.model.OCRole
3738
import 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

Comments
 (0)