From 8cd28c36ce731c359d3b431124c5cbbdb1b389c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey=20Vilas?= Date: Mon, 24 Jan 2022 17:20:14 +0100 Subject: [PATCH 1/2] GalleryFragment: prevent NPE when recreating fragment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getStorageManager() is not available in onCreate Signed-off-by: Álvaro Brey Vilas --- .../android/ui/fragment/GalleryFragment.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java b/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java index 474a4606b707..332fd03e3a1a 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java @@ -62,19 +62,19 @@ public GalleryFragment(boolean refresh) { this.refresh = refresh; } - @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); + 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 @@ -91,6 +91,7 @@ public void onPause() { */ @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + createOperation(); View v = super.onCreateView(inflater, container, savedInstanceState); getRecyclerView().addOnScrollListener(new RecyclerView.OnScrollListener() { From 52e3faecdd65f7b47836c777112e75305e7b5f17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey=20Vilas?= Date: Mon, 24 Jan 2022 17:45:23 +0100 Subject: [PATCH 2/2] GalleryFragment: force refresh on create, prevent unneeded refresh animations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes bugs with double-loading and weird animations Signed-off-by: Álvaro Brey Vilas --- .../ui/activity/FileDisplayActivity.java | 6 +++--- .../android/ui/fragment/GalleryFragment.java | 20 +++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java index 7e26a87ce3d4..11c90ceb13dc 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -525,7 +525,7 @@ protected void onNewIntent(Intent intent) { 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 void run() { OCFileListFragment fragment = getListOfFilesFragment(); - if (fragment != null) { + if (fragment != null && !(fragment instanceof GalleryFragment)) { fragment.setLoading(true); } @@ -2341,7 +2341,7 @@ public void onMessageEvent(final SearchEvent event) { if (SearchRemoteOperation.SearchType.PHOTO_SEARCH == event.searchType) { Log_OC.d(this, "Switch to photo search fragment"); - setLeftFragment(new GalleryFragment(true)); + setLeftFragment(new GalleryFragment()); } } diff --git a/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java b/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java index 332fd03e3a1a..3e595cba2c29 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java @@ -54,14 +54,6 @@ 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); @@ -77,6 +69,12 @@ private void createOperation() { } } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + refresh = true; + } + @Override public void onPause() { super.onPause(); @@ -127,6 +125,12 @@ public void onRefresh() { handleSearchEvent(); } + @Override + public void onResume() { + super.onResume(); + setLoading(photoSearchQueryRunning); + } + @Override public void onMessageEvent(ChangeMenuEvent changeMenuEvent) { super.onMessageEvent(changeMenuEvent);