diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-05-09 13:54:57 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-05-09 13:54:57 +0300 |
commit | 167dc12720c3980ba238cebc15f6f2670282f1d6 (patch) | |
tree | 1d3ab6da445dabd438f42cee1ef9b867f4ed5629 /app/src/main/java/it/niedermann | |
parent | 06404d6e81a2dd1daded266784729a87a947aad0 (diff) |
Only allow changing edit and manage permissions of sharees when user itself has manage permission at this board
Diffstat (limited to 'app/src/main/java/it/niedermann')
2 files changed, 28 insertions, 16 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlAdapter.java index b3e2a24dc..4ab3ac80b 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlAdapter.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Color; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import androidx.annotation.ColorInt; @@ -45,6 +46,7 @@ public class AccessControlAdapter extends RecyclerView.Adapter<RecyclerView.View private AccessControlChangedListener accessControlChangedListener; @NonNull private Context context; + private boolean hasManagePermission = false; AccessControlAdapter(@NonNull Account account, @NonNull AccessControlChangedListener accessControlChangedListener, @NonNull Context context) { this.account = account; @@ -94,18 +96,25 @@ public class AccessControlAdapter extends RecyclerView.Adapter<RecyclerView.View acHolder.binding.username.setCompoundDrawables(null, null, ac.getStatus() == DBStatus.LOCAL_EDITED.getId() ? context.getResources().getDrawable(R.drawable.ic_sync_blue_24dp) : null, null); acHolder.binding.delete.setOnClickListener((v) -> accessControlChangedListener.deleteAccessControl(ac)); - acHolder.binding.permissionEdit.setChecked(ac.isPermissionEdit()); - acHolder.binding.permissionEdit.setOnCheckedChangeListener((buttonView, isChecked) -> { - ac.setPermissionEdit(isChecked); - accessControlChangedListener.updateAccessControl(ac); - }); - - acHolder.binding.permissionManage.setChecked(ac.isPermissionManage()); - acHolder.binding.permissionManage.setOnCheckedChangeListener((buttonView, isChecked) -> { - ac.setPermissionManage(isChecked); - accessControlChangedListener.updateAccessControl(ac); - acHolder.binding.username.setCompoundDrawables(null, null, null, null); - }); + if (hasManagePermission) { + acHolder.binding.permissionEdit.setVisibility(View.VISIBLE); + acHolder.binding.permissionEdit.setChecked(ac.isPermissionEdit()); + acHolder.binding.permissionEdit.setOnCheckedChangeListener((buttonView, isChecked) -> { + ac.setPermissionEdit(isChecked); + accessControlChangedListener.updateAccessControl(ac); + }); + + acHolder.binding.permissionManage.setVisibility(View.VISIBLE); + acHolder.binding.permissionManage.setChecked(ac.isPermissionManage()); + acHolder.binding.permissionManage.setOnCheckedChangeListener((buttonView, isChecked) -> { + ac.setPermissionManage(isChecked); + accessControlChangedListener.updateAccessControl(ac); + acHolder.binding.username.setCompoundDrawables(null, null, null, null); + }); + } else { + acHolder.binding.permissionEdit.setVisibility(View.GONE); + acHolder.binding.permissionManage.setVisibility(View.GONE); + } acHolder.binding.permissionShare.setChecked(ac.isPermissionShare()); acHolder.binding.permissionShare.setOnCheckedChangeListener((buttonView, isChecked) -> { @@ -114,8 +123,10 @@ public class AccessControlAdapter extends RecyclerView.Adapter<RecyclerView.View }); if (Application.isBrandingEnabled(context)) { - brandSwitch(context, acHolder.binding.permissionEdit, mainColor); - brandSwitch(context, acHolder.binding.permissionManage, mainColor); + if (hasManagePermission) { + brandSwitch(context, acHolder.binding.permissionEdit, mainColor); + brandSwitch(context, acHolder.binding.permissionManage, mainColor); + } brandSwitch(context, acHolder.binding.permissionShare, mainColor); } break; @@ -140,9 +151,10 @@ public class AccessControlAdapter extends RecyclerView.Adapter<RecyclerView.View } } - public void update(@NonNull List<AccessControl> accessControls) { + public void update(@NonNull List<AccessControl> accessControls, boolean hasManagePermission) { this.accessControls.clear(); this.accessControls.addAll(accessControls); + this.hasManagePermission = hasManagePermission; notifyDataSetChanged(); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java index e0ab5a8f2..6d2dc7e26 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java @@ -82,7 +82,7 @@ public class AccessControlDialogFragment extends BrandedDialogFragment implement ownerControl.setLocalId(HEADER_ITEM_LOCAL_ID); ownerControl.setUser(fullBoard.getOwner()); accessControlList.add(0, ownerControl); - adapter.update(accessControlList); + adapter.update(accessControlList, fullBoard.getBoard().isPermissionManage()); userAutoCompleteAdapter = new UserAutoCompleteAdapter(requireActivity(), viewModel.getCurrentAccount(), boardId); binding.people.setAdapter(userAutoCompleteAdapter); binding.people.setOnItemClickListener(this); |