Browse Source

Merge pull request #12094 from nextcloud/bugfix/share-is-no-longer-available-after-renaming-folder-9652183

Bugfix Share Is No Longer Available After Renaming Folder
Andy Scherzinger 1 year ago
parent
commit
263e6e01ee

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

@@ -779,6 +779,13 @@ public abstract class FileActivity extends DrawerActivity
         }
         }
     }
     }
 
 
+    public void refreshList() {
+        final Fragment fileListFragment = getSupportFragmentManager().findFragmentByTag(FileDisplayActivity.TAG_LIST_OF_FILES);
+        if (fileListFragment != null)  {
+            ((OCFileListFragment) fileListFragment).onRefresh();
+        }
+    }
+
     private void onCreateShareViaLinkOperationFinish(CreateShareViaLinkOperation operation,
     private void onCreateShareViaLinkOperationFinish(CreateShareViaLinkOperation operation,
                                                      RemoteOperationResult result) {
                                                      RemoteOperationResult result) {
         FileDetailSharingFragment sharingFragment = getShareFileFragment();
         FileDetailSharingFragment sharingFragment = getShareFileFragment();

+ 19 - 19
app/src/main/java/com/owncloud/android/ui/adapter/ShareeListAdapter.java

@@ -25,6 +25,7 @@
 
 
 package com.owncloud.android.ui.adapter;
 package com.owncloud.android.ui.adapter;
 
 
+import android.annotation.SuppressLint;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Drawable;
 import android.view.LayoutInflater;
 import android.view.LayoutInflater;
 import android.view.ViewGroup;
 import android.view.ViewGroup;
@@ -94,15 +95,15 @@ public class ShareeListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
     @Override
     @Override
     public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
     public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
         switch (ShareType.fromValue(viewType)) {
         switch (ShareType.fromValue(viewType)) {
-            case PUBLIC_LINK:
-            case EMAIL:
+            case PUBLIC_LINK, EMAIL -> {
                 return new LinkShareViewHolder(
                 return new LinkShareViewHolder(
                     FileDetailsShareLinkShareItemBinding.inflate(LayoutInflater.from(fileActivity),
                     FileDetailsShareLinkShareItemBinding.inflate(LayoutInflater.from(fileActivity),
                                                                  parent,
                                                                  parent,
                                                                  false),
                                                                  false),
                     fileActivity,
                     fileActivity,
                     viewThemeUtils);
                     viewThemeUtils);
-            case NEW_PUBLIC_LINK:
+            }
+            case NEW_PUBLIC_LINK -> {
                 if (encrypted) {
                 if (encrypted) {
                     return new NewSecureFileDropViewHolder(
                     return new NewSecureFileDropViewHolder(
                         FileDetailsShareSecureFileDropAddNewItemBinding.inflate(LayoutInflater.from(fileActivity),
                         FileDetailsShareSecureFileDropAddNewItemBinding.inflate(LayoutInflater.from(fileActivity),
@@ -116,17 +117,20 @@ public class ShareeListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
                                                                             false)
                                                                             false)
                     );
                     );
                 }
                 }
-            case INTERNAL:
+            }
+            case INTERNAL -> {
                 return new InternalShareViewHolder(
                 return new InternalShareViewHolder(
                     FileDetailsShareInternalShareLinkBinding.inflate(LayoutInflater.from(fileActivity), parent, false),
                     FileDetailsShareInternalShareLinkBinding.inflate(LayoutInflater.from(fileActivity), parent, false),
                     fileActivity);
                     fileActivity);
-            default:
+            }
+            default -> {
                 return new ShareViewHolder(FileDetailsShareShareItemBinding.inflate(LayoutInflater.from(fileActivity),
                 return new ShareViewHolder(FileDetailsShareShareItemBinding.inflate(LayoutInflater.from(fileActivity),
                                                                                     parent,
                                                                                     parent,
                                                                                     false),
                                                                                     false),
                                            user,
                                            user,
                                            fileActivity,
                                            fileActivity,
                                            viewThemeUtils);
                                            viewThemeUtils);
+            }
         }
         }
     }
     }
 
 
@@ -138,17 +142,13 @@ public class ShareeListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
 
 
         final OCShare share = shares.get(position);
         final OCShare share = shares.get(position);
 
 
-        if (holder instanceof LinkShareViewHolder) {
-            LinkShareViewHolder publicShareViewHolder = (LinkShareViewHolder) holder;
+        if (holder instanceof LinkShareViewHolder publicShareViewHolder) {
             publicShareViewHolder.bind(share, listener);
             publicShareViewHolder.bind(share, listener);
-        } else if (holder instanceof InternalShareViewHolder) {
-            InternalShareViewHolder internalShareViewHolder = (InternalShareViewHolder) holder;
+        } else if (holder instanceof InternalShareViewHolder internalShareViewHolder) {
             internalShareViewHolder.bind(share, listener);
             internalShareViewHolder.bind(share, listener);
-        } else if (holder instanceof NewLinkShareViewHolder) {
-            NewLinkShareViewHolder newLinkShareViewHolder = (NewLinkShareViewHolder) holder;
+        } else if (holder instanceof NewLinkShareViewHolder newLinkShareViewHolder) {
             newLinkShareViewHolder.bind(listener);
             newLinkShareViewHolder.bind(listener);
-        } else if (holder instanceof NewSecureFileDropViewHolder) {
-            NewSecureFileDropViewHolder newSecureFileDropViewHolder = (NewSecureFileDropViewHolder) holder;
+        } else if (holder instanceof NewSecureFileDropViewHolder newSecureFileDropViewHolder) {
             newSecureFileDropViewHolder.bind(listener);
             newSecureFileDropViewHolder.bind(listener);
         } else {
         } else {
             ShareViewHolder userViewHolder = (ShareViewHolder) holder;
             ShareViewHolder userViewHolder = (ShareViewHolder) holder;
@@ -166,6 +166,7 @@ public class ShareeListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
         return shares.size();
         return shares.size();
     }
     }
 
 
+    @SuppressLint("NotifyDataSetChanged")
     public void addShares(List<OCShare> sharesToAdd) {
     public void addShares(List<OCShare> sharesToAdd) {
         shares.addAll(sharesToAdd);
         shares.addAll(sharesToAdd);
         sortShares();
         sortShares();
@@ -174,22 +175,21 @@ public class ShareeListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
 
 
     @Override
     @Override
     public void avatarGenerated(Drawable avatarDrawable, Object callContext) {
     public void avatarGenerated(Drawable avatarDrawable, Object callContext) {
-        if (callContext instanceof ImageView) {
-            ImageView iv = (ImageView) callContext;
+        if (callContext instanceof ImageView iv) {
             iv.setImageDrawable(avatarDrawable);
             iv.setImageDrawable(avatarDrawable);
         }
         }
     }
     }
 
 
     @Override
     @Override
     public boolean shouldCallGeneratedCallback(String tag, Object callContext) {
     public boolean shouldCallGeneratedCallback(String tag, Object callContext) {
-        if (callContext instanceof ImageView) {
-            ImageView iv = (ImageView) callContext;
+        if (callContext instanceof ImageView iv) {
             // needs to be changed once federated users have avatars
             // needs to be changed once federated users have avatars
             return String.valueOf(iv.getTag()).equals(tag.split("@")[0]);
             return String.valueOf(iv.getTag()).equals(tag.split("@")[0]);
         }
         }
         return false;
         return false;
     }
     }
 
 
+    @SuppressLint("NotifyDataSetChanged")
     public void remove(OCShare share) {
     public void remove(OCShare share) {
         shares.remove(share);
         shares.remove(share);
         notifyDataSetChanged();
         notifyDataSetChanged();
@@ -210,8 +210,8 @@ public class ShareeListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
             }
             }
         }
         }
 
 
-        Collections.sort(links, (o1, o2) -> Long.compare(o2.getSharedDate(), o1.getSharedDate()));
-        Collections.sort(users, (o1, o2) -> Long.compare(o2.getSharedDate(), o1.getSharedDate()));
+        links.sort((o1, o2) -> Long.compare(o2.getSharedDate(), o1.getSharedDate()));
+        users.sort((o1, o2) -> Long.compare(o2.getSharedDate(), o1.getSharedDate()));
 
 
         shares = links;
         shares = links;
         shares.addAll(users);
         shares.addAll(users);

+ 2 - 2
app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java

@@ -932,15 +932,15 @@ public class FileOperationsHelper {
     }
     }
 
 
     public void renameFile(OCFile file, String newFilename) {
     public void renameFile(OCFile file, String newFilename) {
-        // RenameFile
         Intent service = new Intent(fileActivity, OperationsService.class);
         Intent service = new Intent(fileActivity, OperationsService.class);
+
         service.setAction(OperationsService.ACTION_RENAME);
         service.setAction(OperationsService.ACTION_RENAME);
         service.putExtra(OperationsService.EXTRA_ACCOUNT, fileActivity.getAccount());
         service.putExtra(OperationsService.EXTRA_ACCOUNT, fileActivity.getAccount());
         service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
         service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
         service.putExtra(OperationsService.EXTRA_NEWNAME, newFilename);
         service.putExtra(OperationsService.EXTRA_NEWNAME, newFilename);
         mWaitingForOpId = fileActivity.getOperationsServiceBinder().queueNewOperation(service);
         mWaitingForOpId = fileActivity.getOperationsServiceBinder().queueNewOperation(service);
 
 
-        fileActivity.showLoadingDialog(fileActivity.getString(R.string.wait_a_moment));
+        fileActivity.refreshList();
     }
     }
 
 
 
 

+ 1 - 1
scripts/analysis/lint-results.txt

@@ -1,2 +1,2 @@
 DO NOT TOUCH; GENERATED BY DRONE
 DO NOT TOUCH; GENERATED BY DRONE
-      <span class="mdl-layout-title">Lint Report: 77 warnings</span>
+      <span class="mdl-layout-title">Lint Report: 75 warnings</span>