Skip to content

Commit e3a9230

Browse files
committed
feat: show snackbar after executing add public link operation
1 parent d612636 commit e3a9230

3 files changed

Lines changed: 54 additions & 1 deletion

File tree

owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/links/AddPublicLinkFragment.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,11 @@ import com.owncloud.android.domain.capabilities.model.OCCapability
3636
import com.owncloud.android.domain.links.model.OCLinkType
3737
import com.owncloud.android.domain.spaces.model.OCSpace
3838
import com.owncloud.android.extensions.collectLatestLifecycleFlow
39+
import com.owncloud.android.extensions.showErrorInSnackbar
3940
import com.owncloud.android.presentation.capabilities.CapabilityViewModel
4041
import com.owncloud.android.presentation.common.UIResult
4142
import com.owncloud.android.utils.DisplayUtils
43+
import org.koin.androidx.viewmodel.ext.android.activityViewModel
4244
import org.koin.androidx.viewmodel.ext.android.viewModel
4345
import org.koin.core.parameter.parametersOf
4446
import timber.log.Timber
@@ -50,7 +52,7 @@ class AddPublicLinkFragment: Fragment(), SetPasswordDialogFragment.SetPasswordLi
5052
private var _binding: AddPublicLinkFragmentBinding? = null
5153
private val binding get() = _binding!!
5254

53-
private val spaceLinksViewModel: SpaceLinksViewModel by viewModel {
55+
private val spaceLinksViewModel: SpaceLinksViewModel by activityViewModel {
5456
parametersOf(
5557
requireArguments().getString(ARG_ACCOUNT_NAME),
5658
requireArguments().getParcelable(ARG_CURRENT_SPACE)
@@ -147,6 +149,16 @@ class AddPublicLinkFragment: Fragment(), SetPasswordDialogFragment.SetPasswordLi
147149
}
148150
}
149151

152+
collectLatestLifecycleFlow(spaceLinksViewModel.addLinkResultFlow) { event ->
153+
event?.peekContent()?.let { uiResult ->
154+
when (uiResult) {
155+
is UIResult.Loading -> { }
156+
is UIResult.Success -> parentFragmentManager.popBackStack()
157+
is UIResult.Error -> showErrorInSnackbar(R.string.public_link_add_failed, uiResult.error)
158+
}
159+
}
160+
}
161+
150162
binding.publicLinkPermissions.apply {
151163
canViewPublicLinkRadioButton.setOnClickListener { selectRadioButton(canViewPublicLinkRadioButton) }
152164
canViewPublicLinkLayout.setOnClickListener { selectRadioButton(canViewPublicLinkRadioButton) }

owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/members/SpaceMembersFragment.kt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import com.owncloud.android.extensions.showErrorInSnackbar
4242
import com.owncloud.android.extensions.showMessageInSnackbar
4343
import com.owncloud.android.presentation.common.UIResult
4444
import com.owncloud.android.presentation.spaces.links.SpaceLinksAdapter
45+
import com.owncloud.android.presentation.spaces.links.SpaceLinksViewModel
4546
import com.owncloud.android.utils.DisplayUtils
4647
import org.koin.androidx.viewmodel.ext.android.activityViewModel
4748
import org.koin.core.parameter.parametersOf
@@ -61,6 +62,12 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
6162
requireArguments().getParcelable<OCSpace>(ARG_CURRENT_SPACE)
6263
)
6364
}
65+
private val spaceLinksViewModel: SpaceLinksViewModel by activityViewModel {
66+
parametersOf(
67+
requireArguments().getString(ARG_ACCOUNT_NAME),
68+
requireArguments().getParcelable(ARG_CURRENT_SPACE)
69+
)
70+
}
6471

6572
private lateinit var spaceMembersAdapter: SpaceMembersAdapter
6673
private lateinit var spaceLinksAdapter: SpaceLinksAdapter
@@ -170,6 +177,16 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
170177
}
171178

172179
private fun subscribeToViewModels() {
180+
observeRoles()
181+
observeSpaceMembers()
182+
observeSpacePermissions()
183+
observeAddMemberResult()
184+
observeRemoveMemberResult()
185+
observeEditMemberResult()
186+
observeAddLinkResult()
187+
}
188+
189+
private fun observeRoles() {
173190
collectLatestLifecycleFlow(spaceMembersViewModel.roles) { event ->
174191
event?.let {
175192
when (val uiResult = event.peekContent()) {
@@ -186,7 +203,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
186203
}
187204
}
188205
}
206+
}
189207

208+
private fun observeSpaceMembers() {
190209
collectLatestLifecycleFlow(spaceMembersViewModel.spaceMembers) { event ->
191210
event?.let {
192211
when (val uiResult = event.peekContent()) {
@@ -213,7 +232,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
213232
}
214233
}
215234
}
235+
}
216236

237+
private fun observeSpacePermissions() {
217238
collectLatestLifecycleFlow(spaceMembersViewModel.spacePermissions) { event ->
218239
event?.let {
219240
when (val uiResult = event.peekContent()) {
@@ -230,7 +251,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
230251
}
231252
}
232253
}
254+
}
233255

256+
private fun observeAddMemberResult() {
234257
collectLatestLifecycleFlow(spaceMembersViewModel.addMemberResultFlow) { event ->
235258
event?.peekContent()?.let { uiResult ->
236259
when (uiResult) {
@@ -243,7 +266,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
243266
}
244267
}
245268
}
269+
}
246270

271+
private fun observeRemoveMemberResult() {
247272
collectLatestLifecycleFlow(spaceMembersViewModel.removeMemberResultFlow) { uiResult ->
248273
when (uiResult) {
249274
is UIResult.Loading -> { }
@@ -257,7 +282,9 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
257282
}
258283
}
259284
}
285+
}
260286

287+
private fun observeEditMemberResult() {
261288
collectLatestLifecycleFlow(spaceMembersViewModel.editMemberResultFlow) { event ->
262289
event?.peekContent()?.let { uiResult ->
263290
when (uiResult) {
@@ -272,6 +299,18 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
272299
}
273300
}
274301

302+
private fun observeAddLinkResult() {
303+
collectLatestLifecycleFlow(spaceLinksViewModel.addLinkResultFlow) { event ->
304+
event?.peekContent()?.let { uiResult ->
305+
when (uiResult) {
306+
is UIResult.Loading -> { }
307+
is UIResult.Success -> showMessageInSnackbar(getString(R.string.public_link_add_correctly))
308+
is UIResult.Error -> { }
309+
}
310+
}
311+
}
312+
}
313+
275314
private fun checkPermissions(spacePermissions: List<String>) {
276315
binding.apply {
277316
val hasCreatePermission = DRIVES_CREATE_PERMISSION in spacePermissions

owncloudApp/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,8 @@
924924
<string name="public_link_create_only_description">Upload only, existing content is not revealed</string>
925925
<string name="public_link_internal">Invited people</string>
926926
<string name="public_link_default_display_name">Unnamed Link</string>
927+
<string name="public_link_add_correctly">Public link created correctly</string>
928+
<string name="public_link_add_failed">Public link could not be created</string>
927929

928930
<string name="feedback_dialog_get_in_contact_description"><![CDATA[ Ask for help in our <a href=\"%1$s\"><b>forum</b></a> or contribute in our <a href=\"%2$s\"><b>GitHub repo</b></a>]]></string>
929931

0 commit comments

Comments
 (0)