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 014c1fe18..d0c8e119c 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 @@ -304,37 +304,28 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment } }); - private ActivityResultLauncher locationPermissionLauncher = registerForActivityResult( - new ActivityResultContracts.RequestMultiplePermissions(), - new ActivityResultCallback>() { - @Override - public void onActivityResult(Map result) { - boolean areAllGranted = true; - for (final boolean b : result.values()) { - areAllGranted = areAllGranted && b; - } - - if (areAllGranted) { - locationPermissionGranted(); + private ActivityResultLauncher locationPermissionLauncher = registerForActivityResult( + new ActivityResultContracts.RequestPermission(), isGranted -> { + if (isGranted) { + locationPermissionGranted(); + } else { + if (shouldShowRequestPermissionRationale(permission.ACCESS_FINE_LOCATION)) { + DialogUtil.showAlertDialog(getActivity(), + getActivity().getString(R.string.location_permission_title), + getActivity().getString(R.string.location_permission_rationale_nearby), + getActivity().getString(android.R.string.ok), + getActivity().getString(android.R.string.cancel), + () -> { + if (!(locationManager.isNetworkProviderEnabled() + || locationManager.isGPSProviderEnabled())) { + showLocationOffDialog(); + } + }, + () -> isPermissionDenied = true, + null, + false); } else { - if (shouldShowRequestPermissionRationale(permission.ACCESS_FINE_LOCATION)) { - DialogUtil.showAlertDialog(getActivity(), - getActivity().getString(R.string.location_permission_title), - getActivity().getString(R.string.location_permission_rationale_nearby), - getActivity().getString(android.R.string.ok), - getActivity().getString(android.R.string.cancel), - () -> { - if (!(locationManager.isNetworkProviderEnabled() - || locationManager.isGPSProviderEnabled())) { - showLocationOffDialog(); - } - }, - () -> isPermissionDenied = true, - null, - false); - } else { - isPermissionDenied = true; - } + isPermissionDenied = true; } } }); @@ -1037,10 +1028,28 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment return latLng; } + /** + * Computes location where map should be centered + * + * @return returns the last location, if available, else returns default location + */ @Override public fr.free.nrw.commons.location.LatLng getMapCenter() { - fr.free.nrw.commons.location.LatLng latLnge = new fr.free.nrw.commons.location.LatLng( - mapCenter.getLatitude(), mapCenter.getLongitude(), 100); + if (applicationKvStore.getString("LastLocation") != null) { + final String[] locationLatLng + = applicationKvStore.getString("LastLocation").split(","); + lastKnownLocation + = new fr.free.nrw.commons.location.LatLng(Double.parseDouble(locationLatLng[0]), + Double.parseDouble(locationLatLng[1]), 1f); + } else { + lastKnownLocation = new fr.free.nrw.commons.location.LatLng(51.50550, + -0.07520, 1f); + } + fr.free.nrw.commons.location.LatLng latLnge = lastKnownLocation; + if (mapCenter != null) { + latLnge = new fr.free.nrw.commons.location.LatLng( + mapCenter.getLatitude(), mapCenter.getLongitude(), 100); + } return latLnge; } @@ -1320,7 +1329,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment @Override public void checkPermissionsAndPerformAction() { Timber.d("Checking permission and perfoming action"); - locationPermissionLauncher.launch(new String[]{permission.ACCESS_FINE_LOCATION}); + locationPermissionLauncher.launch(permission.ACCESS_FINE_LOCATION); } /** @@ -1625,7 +1634,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment */ public void updateMarker(final boolean isBookmarked, final Place place, @Nullable final fr.free.nrw.commons.location.LatLng curLatLng) { - addMarkerToMap(place, isBookmarked); + addMarkerToMap(place, isBookmarked); } /** @@ -1770,7 +1779,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment mapView.invalidate(); break; } - } + } } }