Browse Source

Merge pull request #9743 from nextcloud/fix/media-dark-duplicated

Fix crashes and double loading in GalleryFragment when changing dark theme
Álvaro Brey 3 years ago
parent
commit
88605985a0

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

@@ -525,7 +525,7 @@ public class FileDisplayActivity extends FileActivity
                     if (SearchRemoteOperation.SearchType.PHOTO_SEARCH.equals(searchEvent.searchType)) {
                         Log_OC.d(this, "Switch to photo search fragment");
 
-                        GalleryFragment photoFragment = new GalleryFragment(true);
+                        GalleryFragment photoFragment = new GalleryFragment();
                         Bundle bundle = new Bundle();
                         bundle.putParcelable(OCFileListFragment.SEARCH_EVENT, Parcels.wrap(searchEvent));
                         photoFragment.setArguments(bundle);
@@ -2071,7 +2071,7 @@ public class FileDisplayActivity extends FileActivity
 
                             OCFileListFragment fragment = getListOfFilesFragment();
 
-                            if (fragment != null) {
+                            if (fragment != null && !(fragment instanceof GalleryFragment)) {
                                 fragment.setLoading(true);
                             }
 
@@ -2341,7 +2341,7 @@ public class FileDisplayActivity extends FileActivity
         if (SearchRemoteOperation.SearchType.PHOTO_SEARCH == event.searchType) {
             Log_OC.d(this, "Switch to photo search fragment");
 
-            setLeftFragment(new GalleryFragment(true));
+            setLeftFragment(new GalleryFragment());
         }
     }
 

+ 21 - 16
src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java

@@ -54,27 +54,25 @@ public class GalleryFragment extends OCFileListFragment {
     private SearchEvent searchEvent;
     private boolean refresh;
 
-    public GalleryFragment() {
-        this.refresh = false;
-    }
-
-    public GalleryFragment(boolean refresh) {
-        this.refresh = refresh;
+    private void createOperation() {
+        if(searchEvent == null) {
+            searchEvent = new SearchEvent("", SearchRemoteOperation.SearchType.GALLERY_SEARCH);
+        }
+        if(searchRemoteOperation == null) {
+            OCCapability ocCapability = mContainerActivity.getStorageManager()
+                .getCapability(accountManager.getUser().getAccountName());
+
+            searchRemoteOperation = new SearchRemoteOperation(searchEvent.getSearchQuery(),
+                                                              searchEvent.getSearchType(),
+                                                              false,
+                                                              ocCapability);
+        }
     }
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-
-        searchEvent = new SearchEvent("", SearchRemoteOperation.SearchType.GALLERY_SEARCH);
-
-        OCCapability ocCapability = mContainerActivity.getStorageManager()
-            .getCapability(accountManager.getUser().getAccountName());
-
-        searchRemoteOperation = new SearchRemoteOperation(searchEvent.getSearchQuery(),
-                                                          searchEvent.getSearchType(),
-                                                          false,
-                                                          ocCapability);
+        refresh = true;
     }
 
     @Override
@@ -91,6 +89,7 @@ public class GalleryFragment extends OCFileListFragment {
      */
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+        createOperation();
         View v = super.onCreateView(inflater, container, savedInstanceState);
 
         getRecyclerView().addOnScrollListener(new RecyclerView.OnScrollListener() {
@@ -126,6 +125,12 @@ public class GalleryFragment extends OCFileListFragment {
         handleSearchEvent();
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+        setLoading(photoSearchQueryRunning);
+    }
+
     @Override
     public void onMessageEvent(ChangeMenuEvent changeMenuEvent) {
         super.onMessageEvent(changeMenuEvent);