From 79b25734ad1b208c886d0ea80010ddb360820919 Mon Sep 17 00:00:00 2001 From: Kanahia Date: Wed, 29 May 2024 13:13:34 +0530 Subject: [PATCH] Fixed few pins not loading on changing apps --- .../fragments/NearbyParentFragment.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java index e6ef661d1..741cb4860 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java @@ -203,6 +203,9 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment private Place nearestPlace; private volatile boolean stopQuery; + private List updatedPlaceList; + private LatLng updatedLatLng; + private ActivityResultLauncher inAppCameraLocationPermissionLauncher = registerForActivityResult( new RequestMultiplePermissions(), new ActivityResultCallback>() { @@ -598,6 +601,8 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment if (locationPermissionsHelper.checkLocationPermission(getActivity())) { if (lastFocusLocation == null && lastKnownLocation == null) { locationPermissionGranted(); + }else if (updatedPlaceList != null){ + loadPlacesDataAsync(updatedPlaceList, updatedLatLng); } } else { startMapWithoutPermission(); @@ -1433,7 +1438,8 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment public void loadPlacesDataAsync(List placeList, LatLng curLatLng) { List places = new ArrayList<>(placeList); int batchSize = 3; - final List updatedPlaceList = new ArrayList<>(placeList); + updatedLatLng = curLatLng; + updatedPlaceList = new ArrayList<>(placeList); if (VERSION.SDK_INT >= VERSION_CODES.N) { Collections.sort(places, Comparator.comparingDouble(place -> place.getDistanceInDouble(curLatLng))); } @@ -1449,6 +1455,19 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment int endIndex = Math.min(startIndex + batchSize, places.size()); List batch = places.subList(startIndex, endIndex); + for (int i = 0; i< batch.size(); i++){ + if (i == batch.size() - 1 && batch.get(i).name != ""){ + processBatchesSequentially(places, batchSize, updatedPlaceList, curLatLng, endIndex + batchSize); + return; + } + if (batch.get(i).name == ""){ + if (i == 0){ + break; + } + processBatchesSequentially(places, batchSize, updatedPlaceList, curLatLng, endIndex + i); + return; + } + } Disposable disposable = processBatch(batch, updatedPlaceList) .subscribe(p -> {