Browse Source

Added warning when trying to reshare a file without necessary permissions

Victor Nidens 7 years ago
parent
commit
a9857b800c

+ 6 - 0
src/main/java/com/owncloud/android/datamodel/OCFile.java

@@ -56,6 +56,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
     };
 
     private final static String PERMISSION_SHARED_WITH_ME = "S";    // TODO move to better location
+    private final static String PERMISSION_CAN_RESHARE = "R";
 
     public static final String PATH_SEPARATOR = "/";
     public static final String ROOT_PATH = PATH_SEPARATOR;
@@ -687,4 +688,9 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         return (permissions != null && permissions.contains(PERMISSION_SHARED_WITH_ME));
     }
 
+    public boolean canReshare(){
+        String permissions = getPermissions();
+        return permissions != null && permissions.contains(PERMISSION_CAN_RESHARE);
+    }
+
 }

+ 8 - 1
src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -25,6 +25,8 @@ import android.accounts.Account;
 import android.graphics.Bitmap;
 import android.os.Bundle;
 import android.support.v7.widget.SwitchCompat;
+import android.support.design.widget.Snackbar;
+import android.support.v7.widget.AppCompatCheckBox;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -293,7 +295,12 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.action_share_file: {
-                mContainerActivity.getFileOperationsHelper().showShareFile(getFile());
+                if(getFile().isSharedWithMe()
+                        && (mContainerActivity.getStorageManager().getCapability(mContainerActivity.getStorageManager().getAccount().name).getFilesSharingResharing().isFalse() || !getFile().canReshare())){
+                    Snackbar.make(mView, R.string.resharing_is_not_allowed, Snackbar.LENGTH_LONG).show();
+                } else {
+                    mContainerActivity.getFileOperationsHelper().showShareFile(getFile());
+                }
                 return true;
             }
             case R.id.action_open_file_with: {

+ 7 - 1
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -37,6 +37,7 @@ import android.preference.PreferenceManager;
 import android.support.annotation.Nullable;
 import android.support.annotation.StringRes;
 import android.support.design.widget.BottomNavigationView;
+import android.support.design.widget.Snackbar;
 import android.support.v4.widget.DrawerLayout;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.util.SparseBooleanArray;
@@ -912,7 +913,12 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
             OCFile singleFile = checkedFiles.get(0);
             switch (menuId) {
                 case R.id.action_share_file: {
-                    mContainerActivity.getFileOperationsHelper().showShareFile(singleFile);
+                    if(singleFile.isSharedWithMe()
+                            && (mContainerActivity.getStorageManager().getCapability(mContainerActivity.getStorageManager().getAccount().name).getFilesSharingResharing().isFalse() || !singleFile.canReshare())){
+                        Snackbar.make(getView(), R.string.resharing_is_not_allowed, Snackbar.LENGTH_LONG).show();
+                    } else {
+                        mContainerActivity.getFileOperationsHelper().showShareFile(singleFile);
+                    }
                     return true;
                 }
                 case R.id.action_open_file_with: {

+ 1 - 0
src/main/res/values/strings.xml

@@ -697,4 +697,5 @@
     <string name="empty" translatable="false"/>
     <string name="test_server_button">Test server connection</string>
     <string name="info_separator" translatable="false">,</string>
+    <string name="resharing_is_not_allowed">Resharing is not allowed</string>
 </resources>