Skip to content

Commit ea0480f

Browse files
committed
feat: add disable space option in bottom sheet dialog for users with proper permissions
1 parent e6394a0 commit ea0480f

7 files changed

Lines changed: 38 additions & 2 deletions

File tree

‎owncloudApp/src/main/java/com/owncloud/android/extensions/SpaceMenuOptionExt.kt‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ import com.owncloud.android.domain.spaces.model.SpaceMenuOption
2626
fun SpaceMenuOption.toStringResId() =
2727
when (this) {
2828
SpaceMenuOption.EDIT -> R.string.edit_space
29+
SpaceMenuOption.DISABLE -> R.string.disable_space
2930
}
3031

3132
fun SpaceMenuOption.toDrawableResId() =
3233
when (this) {
3334
SpaceMenuOption.EDIT -> R.drawable.ic_pencil
35+
SpaceMenuOption.DISABLE -> R.drawable.ic_disable_space
3436
}

‎owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/SpacesListFragment.kt‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
package com.owncloud.android.presentation.spaces
2424

25+
import android.content.DialogInterface
2526
import android.content.res.Configuration
2627
import android.os.Bundle
2728
import android.view.LayoutInflater
@@ -46,6 +47,7 @@ import com.owncloud.android.domain.spaces.model.OCSpace
4647
import com.owncloud.android.domain.spaces.model.SpaceMenuOption
4748
import com.owncloud.android.domain.user.model.UserPermissions
4849
import com.owncloud.android.extensions.collectLatestLifecycleFlow
50+
import com.owncloud.android.extensions.showAlertDialog
4951
import com.owncloud.android.extensions.showErrorInSnackbar
5052
import com.owncloud.android.extensions.showMessageInSnackbar
5153
import com.owncloud.android.extensions.toDrawableRes
@@ -184,6 +186,7 @@ class SpacesListFragment :
184186
binding.fabCreateSpace.isVisible = it.contains(DRIVES_CREATE_ALL_PERMISSION)
185187
if(it.contains(DRIVES_READ_WRITE_ALL_PERMISSION)) userPermissions.add(UserPermissions.CAN_EDIT_SPACES)
186188
editQuotaPermission = it.contains(DRIVES_READ_WRITE_PROJECT_QUOTA_ALL_PERMISSION)
189+
if(it.contains(DRIVES_DELETE_PROJECT_ALL_PERMISSION)) userPermissions.add(UserPermissions.CAN_DELETE_SPACES)
187190
}
188191
}
189192
is UIResult.Loading -> { }
@@ -338,6 +341,15 @@ class SpacesListFragment :
338341
)
339342
editDialog.show(requireActivity().supportFragmentManager, DIALOG_CREATE_SPACE)
340343
}
344+
SpaceMenuOption.DISABLE -> {
345+
showAlertDialog(
346+
title = getString(R.string.disable_space_dialog_title, currentSpace.name),
347+
message = getString(R.string.disable_space_dialog_message),
348+
positiveButtonText = getString(R.string.common_yes),
349+
positiveButtonListener = { _: DialogInterface?, _: Int -> },
350+
negativeButtonText = getString(R.string.common_no)
351+
)
352+
}
341353
}
342354
}
343355
}
@@ -352,6 +364,7 @@ class SpacesListFragment :
352364
const val DRIVES_CREATE_ALL_PERMISSION = "Drives.Create.all"
353365
const val DRIVES_READ_WRITE_ALL_PERMISSION = "Drives.ReadWrite.all"
354366
const val DRIVES_READ_WRITE_PROJECT_QUOTA_ALL_PERMISSION = "Drives.ReadWriteProjectQuota.all"
367+
const val DRIVES_DELETE_PROJECT_ALL_PERMISSION = "Drives.DeleteProject.all"
355368

356369
private const val DIALOG_CREATE_SPACE = "DIALOG_CREATE_SPACE"
357370

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="960"
5+
android:viewportHeight="960"
6+
android:tint="?attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M320,640L640,640L640,320L320,320L320,640ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Z"/>
10+
</vector>

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,9 @@
853853
<string name="edit_space">Edit space</string>
854854
<string name="edit_space_correctly">Space updated correctly</string>
855855
<string name="edit_space_failed">Space could not be updated</string>
856+
<string name="disable_space">Disable space</string>
857+
<string name="disable_space_dialog_title">Do you really want to disable the space: %1$s?</string>
858+
<string name="disable_space_dialog_message">If you disable the selected space, it can no longer be accessed. Only Space managers will still have access. Note: No files will be deleted from the server.</string>
856859

857860
<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>
858861

‎owncloudDomain/src/main/java/com/owncloud/android/domain/spaces/model/SpaceMenuOption.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@
2121
package com.owncloud.android.domain.spaces.model
2222

2323
enum class SpaceMenuOption {
24-
EDIT
24+
EDIT, DISABLE
2525
}

‎owncloudDomain/src/main/java/com/owncloud/android/domain/spaces/usecases/FilterSpaceMenuOptionsUseCase.kt‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,17 @@ class FilterSpaceMenuOptionsUseCase(
3838
val editPermission =
3939
(UserPermissions.CAN_EDIT_SPACES in params.userPermissions || hasSpacePermission(spacePermissionsResult, DRIVES_MANAGE_PERMISSION))
4040

41+
val deletePermission =
42+
(UserPermissions.CAN_DELETE_SPACES in params.userPermissions || hasSpacePermission(spacePermissionsResult, DRIVES_DELETE_PERMISSION))
43+
4144
if (editPermission) {
4245
optionsToShow.add(SpaceMenuOption.EDIT)
4346
}
4447

48+
if (!params.space.isDisabled && deletePermission) {
49+
optionsToShow.add(SpaceMenuOption.DISABLE)
50+
}
51+
4552
return optionsToShow
4653
}
4754

@@ -59,5 +66,6 @@ class FilterSpaceMenuOptionsUseCase(
5966

6067
companion object {
6168
private const val DRIVES_MANAGE_PERMISSION = "libre.graph/driveItem/permissions/update"
69+
private const val DRIVES_DELETE_PERMISSION = "libre.graph/driveItem/permissions/delete"
6270
}
6371
}

‎owncloudDomain/src/main/java/com/owncloud/android/domain/user/model/UserPermissions.kt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@
2121
package com.owncloud.android.domain.user.model
2222

2323
enum class UserPermissions {
24-
CAN_EDIT_SPACES
24+
CAN_EDIT_SPACES, CAN_DELETE_SPACES
2525
}

0 commit comments

Comments
 (0)