From f8e8d13b786fe3f798df5648a113d5e029a698b0 Mon Sep 17 00:00:00 2001 From: neslihanturan Date: Fri, 17 May 2019 18:38:22 +0300 Subject: [PATCH] Add lock neabry method to unlisten nearby operations during updates --- .../NearbyParentFragmentContract.java | 1 + .../NearbyParentFragmentPresenter.java | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyParentFragmentContract.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyParentFragmentContract.java index bea30056b..1283c2a5b 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyParentFragmentContract.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/contract/NearbyParentFragmentContract.java @@ -20,5 +20,6 @@ public interface NearbyParentFragmentContract { void onTabSelected(); void initializeNearbyOperations(); void updateMapAndList(LocationServiceManager.LocationChangeType locationChangeType); + void lockNearby(boolean isNearbyLocked); } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java index 2b6e8b35a..c58542393 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java @@ -7,6 +7,7 @@ import fr.free.nrw.commons.location.LocationServiceManager; import fr.free.nrw.commons.location.LocationUpdateListener; import fr.free.nrw.commons.nearby.mvp.contract.NearbyParentFragmentContract; import fr.free.nrw.commons.wikidata.WikidataEditListener; +import timber.log.Timber; public class NearbyParentFragmentPresenter implements NearbyParentFragmentContract.UserActions, @@ -16,6 +17,7 @@ public class NearbyParentFragmentPresenter LocationServiceManager locationManager; private NearbyParentFragmentContract.View nearbyParentFragmentView; + private boolean isNearbyLocked; public NearbyParentFragmentPresenter(NearbyParentFragmentContract.View nearbyParentFragmentView) { this.nearbyParentFragmentView = nearbyParentFragmentView; @@ -43,6 +45,23 @@ public class NearbyParentFragmentPresenter } + /** + * Nearby updates takes time, since they are network operations. During update time, we don't + * want to get any other calls from user. So locking nearby. + * @param isNearbyLocked true means lock, false means unlock + */ + @Override + public void lockNearby(boolean isNearbyLocked) { + this.isNearbyLocked = isNearbyLocked; + if (isNearbyLocked) { + locationManager.unregisterLocationManager(); + locationManager.removeLocationListener(this); + } else { + nearbyParentFragmentView.registerLocationUpdates(locationManager); + locationManager.addLocationListener(this); + } + } + /** * This method should be the single point to update Map and List. Triggered by location * changes @@ -50,6 +69,12 @@ public class NearbyParentFragmentPresenter */ @Override public void updateMapAndList(LocationServiceManager.LocationChangeType locationChangeType) { + if (isNearbyLocked) { + Timber.d("Nearby is locked, so updateMapAndList returns"); + return; + } + + }