Эх сурвалжийг харах

Merge pull request #7992 from nextcloud/fixSharing

Fix wrong sharing behavior.
Tobias Kaminsky 4 жил өмнө
parent
commit
ecbf815f23

+ 7 - 11
src/main/java/com/owncloud/android/ui/activity/FileActivity.java

@@ -294,6 +294,10 @@ public abstract class FileActivity extends DrawerActivity
      * @return  Main {@link OCFile} handled by the activity.
      */
     public OCFile getFile() {
+        FileDetailSharingFragment fragment = getShareFileFragment();
+        if (fragment != null) {
+            return fragment.getFile();
+        }
         return mFile;
     }
 
@@ -763,18 +767,10 @@ public abstract class FileActivity extends DrawerActivity
                 sharingFragment.onUpdateShareInformation(result, getFile());
             }
         } else if (sharingFragment != null && sharingFragment.getView() != null) {
-            String errorResponse;
-
-            if (result.getData() != null && result.getData().size() > 0) {
-                errorResponse = result.getData().get(0).toString();
-            } else {
-                errorResponse = "";
-            }
-
-            if (!TextUtils.isEmpty(errorResponse)) {
-                snackbar = Snackbar.make(sharingFragment.getView(), errorResponse, Snackbar.LENGTH_LONG);
-            } else {
+            if (TextUtils.isEmpty(result.getMessage())) {
                 snackbar = Snackbar.make(sharingFragment.getView(), defaultError, Snackbar.LENGTH_LONG);
+            } else {
+                snackbar = Snackbar.make(sharingFragment.getView(), result.getMessage(), Snackbar.LENGTH_LONG);
             }
 
             ThemeSnackbarUtils.colorSnackbar(this, snackbar);

+ 11 - 11
src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -1149,6 +1149,17 @@ public class FileDisplayActivity extends FileActivity
         // Instead of onPostCreate, starting the loading in onResume for children fragments
         Fragment leftFragment = getLeftFragment();
 
+        // Listen for sync messages
+        if (!(leftFragment instanceof OCFileListFragment) || !((OCFileListFragment) leftFragment).isSearchFragment()) {
+            IntentFilter syncIntentFilter = new IntentFilter(FileSyncAdapter.EVENT_FULL_SYNC_START);
+            syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_END);
+            syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED);
+            syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED);
+            syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED);
+            mSyncBroadcastReceiver = new SyncBroadcastReceiver();
+            localBroadcastManager.registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
+        }
+
         if (!(leftFragment instanceof OCFileListFragment)) {
             return;
         }
@@ -1175,17 +1186,6 @@ public class FileDisplayActivity extends FileActivity
             updateActionBarTitleAndHomeButton(startFile);
         }
 
-        // Listen for sync messages
-        if (!ocFileListFragment.isSearchFragment()) {
-            IntentFilter syncIntentFilter = new IntentFilter(FileSyncAdapter.EVENT_FULL_SYNC_START);
-            syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_END);
-            syncIntentFilter.addAction(FileSyncAdapter.EVENT_FULL_SYNC_FOLDER_CONTENTS_SYNCED);
-            syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED);
-            syncIntentFilter.addAction(RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED);
-            mSyncBroadcastReceiver = new SyncBroadcastReceiver();
-            localBroadcastManager.registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
-        }
-
         // Listen for upload messages
         IntentFilter uploadIntentFilter = new IntentFilter(FileUploader.getUploadFinishMessage());
         mUploadFinishReceiver = new UploadFinishReceiver();

+ 4 - 0
src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java

@@ -716,4 +716,8 @@ public class FileDetailSharingFragment extends Fragment implements ShareeListAda
         SearchView searchView = getView().findViewById(R.id.searchView);
         searchView.setQuery(query, true);
     }
+
+    public OCFile getFile() {
+        return file;
+    }
 }

+ 7 - 9
src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java

@@ -244,24 +244,22 @@ public final class ErrorMessageAdapter {
 
         } else if (result.getCode() == ResultCode.FORBIDDEN) {
             return String.format(res.getString(R.string.forbidden_permissions),
-                    res.getString(R.string.forbidden_permissions_copy));
+                                 res.getString(R.string.forbidden_permissions_copy));
 
         }
         return null;
     }
 
-    private static String getMessageForCreateShareOperations(RemoteOperationResult result, Resources res) {
-        if (result.getData() != null && result.getData().size() > 0) {
-            return (String) result.getData().get(0);     // share API sends its own error messages
-
-        } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND)  {
+    private static @Nullable
+    String getMessageForCreateShareOperations(RemoteOperationResult result, Resources res) {
+        if (!TextUtils.isEmpty(result.getMessage())) {
+            return result.getMessage();     // share API sends its own error messages
+        } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) {
             return res.getString(R.string.share_link_file_no_exist);
-
         } else if (result.getCode() == ResultCode.SHARE_FORBIDDEN) {
             // Error --> No permissions
             return String.format(res.getString(R.string.forbidden_permissions),
-                    res.getString(R.string.share_link_forbidden_permissions));
-
+                                 res.getString(R.string.share_link_forbidden_permissions));
         }
         return null;
     }