From 7e12d2855777f9246265921828b830e00a7bd1b9 Mon Sep 17 00:00:00 2001 From: Ayan Sarkar <71203077+Ayan-10@users.noreply.github.com> Date: Thu, 20 Jan 2022 20:04:44 +0530 Subject: [PATCH] Fixes 4497 : this a photo of place X: Do not ask if the item (depiction) is already selected for addition and the photo already has a caption (#4754) * Dialog can't be dismissed * Dialog can't be dismissed * Nearby Place dialog can remember user preference * Minor change * Minor change * Renamed the map --- .../nrw/commons/upload/UploadActivity.java | 8 +++++++ .../UploadMediaDetailFragment.java | 24 ++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java index 6b5ec8f40..a40e84917 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java @@ -55,6 +55,7 @@ import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import javax.inject.Inject; import javax.inject.Named; @@ -117,6 +118,12 @@ public class UploadActivity extends BaseActivity implements UploadContract.View, public static final String EXTRA_FILES = "commons_image_exta"; + /** + * Stores all nearby places found and related users response for + * each place while uploading media + */ + public static HashMap nearbyPopupAnswers; + @SuppressLint("CheckResult") @Override protected void onCreate(Bundle savedInstanceState) { @@ -127,6 +134,7 @@ public class UploadActivity extends BaseActivity implements UploadContract.View, ButterKnife.bind(this); compositeDisposable = new CompositeDisposable(); init(); + nearbyPopupAnswers = new HashMap<>(); PermissionUtils.checkPermissionsAndPerformAction(this, Manifest.permission.WRITE_EXTERNAL_STORAGE, diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java index b73553f5e..3ab9dc2b3 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailFragment.java @@ -34,6 +34,7 @@ import fr.free.nrw.commons.nearby.Place; import fr.free.nrw.commons.settings.Prefs; import fr.free.nrw.commons.upload.ImageCoordinates; import fr.free.nrw.commons.upload.SimilarImageDialogFragment; +import fr.free.nrw.commons.upload.UploadActivity; import fr.free.nrw.commons.upload.UploadBaseFragment; import fr.free.nrw.commons.upload.UploadItem; import fr.free.nrw.commons.upload.UploadMediaDetail; @@ -259,7 +260,15 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements this.uploadItem = uploadItem; showNearbyFound = true; if(callback.getIndexInViewFlipper(this) == 0) { - showNearbyPlaceFound(nearbyPlace); + if (UploadActivity.nearbyPopupAnswers.containsKey(nearbyPlace)) { + final boolean response = UploadActivity.nearbyPopupAnswers.get(nearbyPlace); + if (response) { + presenter.onUserConfirmedUploadIsOfPlace(nearbyPlace, + callback.getIndexInViewFlipper(this)); + } + } else { + showNearbyPlaceFound(nearbyPlace); + } showNearbyFound = false; } } @@ -279,10 +288,11 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements getString(R.string.upload_nearby_place_found_description), place.getName()), () -> { + UploadActivity.nearbyPopupAnswers.put(place, true); presenter.onUserConfirmedUploadIsOfPlace(place, callback.getIndexInViewFlipper(this)); }, () -> { - + UploadActivity.nearbyPopupAnswers.put(place, false); }, customLayout, true); } @@ -305,7 +315,15 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements super.onBecameVisible(); presenter.fetchTitleAndDescription(callback.getIndexInViewFlipper(this)); if(showNearbyFound) { - showNearbyPlaceFound(nearbyPlace); + if (UploadActivity.nearbyPopupAnswers.containsKey(nearbyPlace)) { + final boolean response = UploadActivity.nearbyPopupAnswers.get(nearbyPlace); + if (response) { + presenter.onUserConfirmedUploadIsOfPlace(nearbyPlace, + callback.getIndexInViewFlipper(this)); + } + } else { + showNearbyPlaceFound(nearbyPlace); + } showNearbyFound = false; } }