Skip to content

Commit 98f07c5

Browse files
committed
add new permissions to the quick sharing bottom sheet
Signed-off-by: alperozturk <alper_ozturk@proton.me>
1 parent 56c2279 commit 98f07c5

4 files changed

Lines changed: 74 additions & 63 deletions

File tree

app/src/main/java/com/owncloud/android/ui/fragment/FileDetailsSharingProcessFragment.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ class FileDetailsSharingProcessFragment :
295295
binding.fileDropRadioButton.isChecked = true
296296
} else if (SharingMenuHelper.isReadOnly(share)) {
297297
binding.viewOnlyRadioButton.isChecked = true
298-
}
298+
} // TODO:
299299

300300
shareType = share?.shareType ?: ShareType.NO_SHARED
301301

@@ -539,17 +539,15 @@ class FileDetailsSharingProcessFragment :
539539
if (isFolder()) {
540540
// Only for the folder makes sense to have create permission
541541
// so that user can create files in the shared folder
542-
shareReadCheckbox.isChecked =
543-
sharePermissionManager.hasPermission(currentPermissions, OCShare.READ_PERMISSION_FLAG)
542+
shareCreateCheckbox.isChecked =
543+
sharePermissionManager.hasPermission(currentPermissions, OCShare.CREATE_PERMISSION_FLAG)
544544
} else {
545-
shareReadCheckbox.visibility = View.GONE
545+
shareCreateCheckbox.visibility = View.GONE
546546
}
547-
shareCreateCheckbox.isChecked =
548-
sharePermissionManager.hasPermission(currentPermissions, OCShare.CREATE_PERMISSION_FLAG)
547+
shareReadCheckbox.isChecked =
548+
sharePermissionManager.hasPermission(currentPermissions, OCShare.READ_PERMISSION_FLAG)
549549
shareEditCheckbox.isChecked =
550550
sharePermissionManager.hasPermission(currentPermissions, OCShare.UPDATE_PERMISSION_FLAG)
551-
shareCheckbox.isChecked =
552-
sharePermissionManager.hasPermission(currentPermissions, OCShare.SHARE_PERMISSION_FLAG)
553551

554552
if (isFolder()) {
555553
shareDeleteCheckbox.isChecked =
@@ -558,6 +556,9 @@ class FileDetailsSharingProcessFragment :
558556
shareDeleteCheckbox.isChecked = false
559557
shareDeleteCheckbox.isEnabled = false
560558
}
559+
560+
shareCheckbox.isChecked =
561+
sharePermissionManager.hasPermission(currentPermissions, OCShare.SHARE_PERMISSION_FLAG)
561562
}
562563

563564
setCheckboxesListeners()

app/src/main/java/com/owncloud/android/ui/fragment/QuickSharingPermissionsBottomSheetDialog.java

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
package com.owncloud.android.ui.fragment;
1212

13+
import android.app.Dialog;
1314
import android.os.Bundle;
1415
import android.view.View;
1516
import android.view.ViewGroup;
@@ -31,12 +32,15 @@
3132
import androidx.recyclerview.widget.LinearLayoutManager;
3233

3334
import static com.owncloud.android.lib.resources.shares.OCShare.CREATE_PERMISSION_FLAG;
35+
import static com.owncloud.android.lib.resources.shares.OCShare.DELETE_PERMISSION_FLAG;
3436
import static com.owncloud.android.lib.resources.shares.OCShare.MAXIMUM_PERMISSIONS_FOR_FILE;
3537
import static com.owncloud.android.lib.resources.shares.OCShare.MAXIMUM_PERMISSIONS_FOR_FOLDER;
3638
import static com.owncloud.android.lib.resources.shares.OCShare.READ_PERMISSION_FLAG;
39+
import static com.owncloud.android.lib.resources.shares.OCShare.SHARE_PERMISSION_FLAG;
40+
import static com.owncloud.android.lib.resources.shares.OCShare.UPDATE_PERMISSION_FLAG;
3741

3842
/**
39-
* File Details Quick Sharing permissions options {@link android.app.Dialog} styled as a bottom sheet for main actions.
43+
* File Details Quick Sharing permissions options {@link Dialog} styled as a bottom sheet for main actions.
4044
*/
4145
public class QuickSharingPermissionsBottomSheetDialog extends BottomSheetDialog {
4246
private QuickSharingPermissionsBottomSheetFragmentBinding binding;
@@ -103,25 +107,27 @@ public void onDismissSheet() {
103107
* @param position
104108
*/
105109
private void handlePermissionChanged(List<QuickPermissionModel> quickPermissionModelList, int position) {
106-
if (quickPermissionModelList.get(position).getPermissionName().equalsIgnoreCase(fileActivity.getResources().getString(R.string.link_share_allow_upload_and_editing))
107-
|| quickPermissionModelList.get(position).getPermissionName().equalsIgnoreCase(fileActivity.getResources().getString(R.string.link_share_editing))) {
108-
if (ocShare.isFolder()) {
109-
actions.onQuickPermissionChanged(ocShare,
110-
MAXIMUM_PERMISSIONS_FOR_FOLDER);
111-
} else {
112-
actions.onQuickPermissionChanged(ocShare,
113-
MAXIMUM_PERMISSIONS_FOR_FILE);
114-
}
115-
} else if (quickPermissionModelList.get(position).getPermissionName().equalsIgnoreCase(fileActivity.getResources().getString(R.string
116-
.link_share_view_only))) {
117-
actions.onQuickPermissionChanged(ocShare,
118-
READ_PERMISSION_FLAG);
119-
120-
} else if (quickPermissionModelList.get(position).getPermissionName().equalsIgnoreCase(fileActivity.getResources().getString(R.string
121-
.link_share_file_drop))) {
122-
actions.onQuickPermissionChanged(ocShare,
123-
CREATE_PERMISSION_FLAG);
110+
final var permissionName = quickPermissionModelList.get(position).getPermissionName();
111+
final var res = fileActivity.getResources();
112+
113+
int permissionFlag = 0;
114+
if (permissionName.equalsIgnoreCase(res.getString(R.string.link_share_allow_upload_and_editing)) || permissionName.equalsIgnoreCase(res.getString(R.string.link_share_editing))) {
115+
permissionFlag = ocShare.isFolder() ? MAXIMUM_PERMISSIONS_FOR_FOLDER : MAXIMUM_PERMISSIONS_FOR_FILE;
116+
} else if (permissionName.equalsIgnoreCase(res.getString(R.string.link_share_view_only))) {
117+
permissionFlag = READ_PERMISSION_FLAG;
118+
} else if (permissionName.equalsIgnoreCase(res.getString(R.string.link_share_file_drop)) || permissionName.equalsIgnoreCase(res.getString(R.string.share_create_permission))) {
119+
permissionFlag = CREATE_PERMISSION_FLAG;
120+
} else if (permissionName.equalsIgnoreCase(res.getString(R.string.share_edit_permission))) {
121+
permissionFlag = UPDATE_PERMISSION_FLAG;
122+
} else if (permissionName.equalsIgnoreCase(res.getString(R.string.share_delete_permission))) {
123+
permissionFlag = DELETE_PERMISSION_FLAG;
124+
} else if (permissionName.equalsIgnoreCase(res.getString(R.string.share_re_share_permission))) {
125+
permissionFlag = SHARE_PERMISSION_FLAG;
124126
}
127+
128+
// FIXME: Failed to update share
129+
actions.onQuickPermissionChanged(ocShare, permissionFlag);
130+
125131
dismiss();
126132
}
127133

app/src/main/java/com/owncloud/android/ui/fragment/util/SharingMenuHelper.java

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,19 @@
1212
package com.owncloud.android.ui.fragment.util;
1313

1414
import android.content.Context;
15-
import android.content.res.Resources;
1615
import android.view.MenuItem;
1716

1817
import com.owncloud.android.R;
1918
import com.owncloud.android.lib.resources.shares.OCShare;
2019

21-
import java.text.SimpleDateFormat;
22-
import java.util.Date;
23-
2420
import static com.owncloud.android.lib.resources.shares.OCShare.CREATE_PERMISSION_FLAG;
21+
import static com.owncloud.android.lib.resources.shares.OCShare.DELETE_PERMISSION_FLAG;
2522
import static com.owncloud.android.lib.resources.shares.OCShare.MAXIMUM_PERMISSIONS_FOR_FILE;
2623
import static com.owncloud.android.lib.resources.shares.OCShare.MAXIMUM_PERMISSIONS_FOR_FOLDER;
2724
import static com.owncloud.android.lib.resources.shares.OCShare.NO_PERMISSION;
2825
import static com.owncloud.android.lib.resources.shares.OCShare.READ_PERMISSION_FLAG;
2926
import static com.owncloud.android.lib.resources.shares.OCShare.SHARE_PERMISSION_FLAG;
27+
import static com.owncloud.android.lib.resources.shares.OCShare.UPDATE_PERMISSION_FLAG;
3028

3129
/**
3230
* Helper calls for visibility logic of the sharing menu.
@@ -53,38 +51,6 @@ public static void setupHideFileDownload(MenuItem menuItem,
5351
}
5452
}
5553

56-
/**
57-
* sets up the password {@link MenuItem}'s title based on the fact if a password is present.
58-
*
59-
* @param password the password {@link MenuItem}
60-
* @param isPasswordProtected flag is a password is present
61-
*/
62-
public static void setupPasswordMenuItem(MenuItem password, boolean isPasswordProtected) {
63-
if (isPasswordProtected) {
64-
password.setTitle(R.string.share_password_title);
65-
} else {
66-
password.setTitle(R.string.share_no_password_title);
67-
}
68-
}
69-
70-
/**
71-
* sets up the expiration date {@link MenuItem}'s title based on the fact if an expiration date is present.
72-
*
73-
* @param expirationDate the expiration date {@link MenuItem}
74-
* @param expirationDateValue the expiration date
75-
* @param res Resources to load the corresponding strings.
76-
*/
77-
public static void setupExpirationDateMenuItem(MenuItem expirationDate, long expirationDateValue, Resources res) {
78-
if (expirationDateValue > 0) {
79-
expirationDate.setTitle(res.getString(
80-
R.string.share_expiration_date_label,
81-
SimpleDateFormat.getDateInstance().format(new Date(expirationDateValue))
82-
));
83-
} else {
84-
expirationDate.setTitle(R.string.share_no_expiration_date_label);
85-
}
86-
}
87-
8854
public static boolean isUploadAndEditingAllowed(OCShare share) {
8955
if (share.getPermissions() == NO_PERMISSION) {
9056
return false;
@@ -119,6 +85,30 @@ public static boolean isSecureFileDrop(OCShare share) {
11985
return (share.getPermissions() & ~SHARE_PERMISSION_FLAG) == CREATE_PERMISSION_FLAG + READ_PERMISSION_FLAG;
12086
}
12187

88+
public static boolean isCreatePermission(OCShare share) {
89+
if (share.getPermissions() == NO_PERMISSION) {
90+
return false;
91+
}
92+
93+
return (share.getPermissions() & ~SHARE_PERMISSION_FLAG) == CREATE_PERMISSION_FLAG;
94+
}
95+
96+
public static boolean isUpdatePermission(OCShare share) {
97+
if (share.getPermissions() == NO_PERMISSION) {
98+
return false;
99+
}
100+
101+
return (share.getPermissions() & ~SHARE_PERMISSION_FLAG) == UPDATE_PERMISSION_FLAG;
102+
}
103+
104+
public static boolean isDeletePermission(OCShare share) {
105+
if (share.getPermissions() == NO_PERMISSION) {
106+
return false;
107+
}
108+
109+
return (share.getPermissions() & ~SHARE_PERMISSION_FLAG) == DELETE_PERMISSION_FLAG;
110+
}
111+
122112
public static String getPermissionName(Context context, OCShare share) {
123113
if (SharingMenuHelper.isUploadAndEditingAllowed(share)) {
124114
return context.getResources().getString(R.string.share_permission_can_edit);
@@ -147,6 +137,14 @@ public static int getPermissionCheckedItem(Context context, OCShare share, Strin
147137
return getPermissionIndexFromArray(context, permissionArray, R.string.link_share_view_only);
148138
} else if (SharingMenuHelper.isFileDrop(share)) {
149139
return getPermissionIndexFromArray(context, permissionArray, R.string.link_share_file_drop);
140+
} else if (SharingMenuHelper.isCreatePermission(share)) {
141+
return getPermissionIndexFromArray(context, permissionArray, R.string.share_create_permission);
142+
} else if (SharingMenuHelper.isUpdatePermission(share)) {
143+
return getPermissionIndexFromArray(context, permissionArray, R.string.share_edit_permission);
144+
} else if (SharingMenuHelper.isDeletePermission(share)) {
145+
return getPermissionIndexFromArray(context, permissionArray, R.string.share_delete_permission);
146+
} else if (SharingMenuHelper.canReshare(share)) {
147+
return getPermissionIndexFromArray(context, permissionArray, R.string.share_re_share_permission);
150148
}
151149
return 0;//default first item selected
152150
}

app/src/main/res/values/attrs.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,17 @@
3030
<item>@string/link_share_view_only</item>
3131
<item>@string/link_share_allow_upload_and_editing</item>
3232
<item>@string/link_share_file_drop</item>
33+
<item>@string/share_create_permission</item>
34+
<item>@string/share_edit_permission</item>
35+
<item>@string/share_delete_permission</item>
36+
<item>@string/share_re_share_permission</item>
3337
</string-array>
3438

3539
<string-array name="file_share_permission_dialog_values" translatable="false">
3640
<item>@string/link_share_view_only</item>
3741
<item>@string/link_share_editing</item>
42+
<item>@string/share_edit_permission</item>
43+
<item>@string/share_re_share_permission</item>
3844
</string-array>
3945
<string-array name="sub_folder_rule_values" translatable="false">
4046
<item>@string/sub_folder_rule_month</item>

0 commit comments

Comments
 (0)