Browse Source

adaptes federated shares permission computation

AndyScherzinger 8 years ago
parent
commit
a24c4b5878

+ 23 - 7
src/main/java/com/owncloud/android/ui/activity/ShareActivity.java

@@ -38,6 +38,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.shares.OCShare;
 import com.owncloud.android.lib.resources.shares.ShareType;
+import com.owncloud.android.lib.resources.status.OwnCloudVersion;
 import com.owncloud.android.operations.CreateShareViaLinkOperation;
 import com.owncloud.android.operations.GetSharesForFileOperation;
 import com.owncloud.android.operations.UnshareOperation;
@@ -153,13 +154,28 @@ public class ShareActivity extends FileActivity
         if (getFile().isSharedWithMe()) {
             return OCShare.READ_PERMISSION_FLAG;    // minimum permissions
 
-        } else if (getFile().isFolder()) {
-            return (isFederated) ? OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_UP_TO_OC9 :
-                    OCShare.MAXIMUM_PERMISSIONS_FOR_FOLDER;
-
-        } else {    // isFile
-            return (isFederated) ? OCShare.FEDERATED_PERMISSIONS_FOR_FILE_UP_TO_OC9 :
-                    OCShare.MAXIMUM_PERMISSIONS_FOR_FILE;
+        } else if (isFederated) {
+            OwnCloudVersion serverVersion =
+                    com.owncloud.android.authentication.AccountUtils.getServerVersion(getAccount());
+            if (serverVersion != null && serverVersion.isNotReshareableFederatedSupported()) {
+                return (
+                        getFile().isFolder() ?
+                                OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_AFTER_OC9 :
+                                OCShare.FEDERATED_PERMISSIONS_FOR_FILE_AFTER_OC9
+                );
+            } else {
+                return (
+                        getFile().isFolder() ?
+                                OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_UP_TO_OC9 :
+                                OCShare.FEDERATED_PERMISSIONS_FOR_FILE_UP_TO_OC9
+                );
+            }
+        } else {
+            return (
+                    getFile().isFolder() ?
+                            OCShare.MAXIMUM_PERMISSIONS_FOR_FOLDER :
+                            OCShare.MAXIMUM_PERMISSIONS_FOR_FILE
+            );
         }
     }
 

+ 12 - 3
src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java

@@ -478,9 +478,18 @@ public class FileOperationsHelper {
         if (hideFileListing) {
             updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS, OCShare.CREATE_PERMISSION_FLAG);
         } else {
-            updateShareIntent.
-                    putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS,
-                            OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_UP_TO_OC9);
+            OwnCloudVersion serverVersion =
+                    com.owncloud.android.authentication.AccountUtils.getServerVersion(mFileActivity.getAccount());
+
+            if (serverVersion != null && serverVersion.isNotReshareableFederatedSupported()) {
+                updateShareIntent.
+                        putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS,
+                                OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_AFTER_OC9);
+            } else {
+                updateShareIntent.
+                        putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS,
+                                OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_UP_TO_OC9);
+            }
         }
 
         queueShareIntent(updateShareIntent);