From a933b92efac6922ad50fe607a5ea3b219e4fe9ad Mon Sep 17 00:00:00 2001 From: Tanmay Gupta <119003089+savsch@users.noreply.github.com> Date: Sat, 14 Dec 2024 15:42:44 +0530 Subject: [PATCH] Fix caption lost on accepting 'Is this a pic of' (#6030) Fixes issue 5842 by correcting the implementation of onUserConfirmedUploadIsOfPlace in UploadMediaDetailsContract's UserActionListener Co-authored-by: Nicolas Raoul --- .../UploadMediaDetailFragment.java | 6 ++--- .../UploadMediaDetailsContract.kt | 2 +- .../mediaDetails/UploadMediaPresenter.java | 23 ++++++++++--------- 3 files changed, 16 insertions(+), 15 deletions(-) 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 27556da4a..53ba6b75c 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 @@ -398,7 +398,7 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements final boolean response = UploadActivity.nearbyPopupAnswers.get(nearbyPlace); if (response) { if (callback != null) { - presenter.onUserConfirmedUploadIsOfPlace(nearbyPlace); + presenter.onUserConfirmedUploadIsOfPlace(nearbyPlace, indexOfFragment); } } } else { @@ -445,7 +445,7 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements () -> { // Execute when user confirms the upload is of the specified place UploadActivity.nearbyPopupAnswers.put(place, true); - presenter.onUserConfirmedUploadIsOfPlace(place); + presenter.onUserConfirmedUploadIsOfPlace(place, indexOfFragment); }, () -> { // Execute when user cancels the upload of the specified place @@ -486,7 +486,7 @@ public class UploadMediaDetailFragment extends UploadBaseFragment implements if (UploadActivity.nearbyPopupAnswers.containsKey(nearbyPlace)) { final boolean response = UploadActivity.nearbyPopupAnswers.get(nearbyPlace); if (response) { - presenter.onUserConfirmedUploadIsOfPlace(nearbyPlace); + presenter.onUserConfirmedUploadIsOfPlace(nearbyPlace, indexOfFragment); } } else { showNearbyPlaceFound(nearbyPlace); diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.kt b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.kt index ca4d8e67b..88dad8b93 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaDetailsContract.kt @@ -117,6 +117,6 @@ interface UploadMediaDetailsContract { fun onEditButtonClicked(indexInViewFlipper: Int) - fun onUserConfirmedUploadIsOfPlace(place: Place?) + fun onUserConfirmedUploadIsOfPlace(place: Place?, uploadItemIndex: Int) } } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java index 6c234cdaf..e626ee876 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/mediaDetails/UploadMediaPresenter.java @@ -322,23 +322,24 @@ public class UploadMediaPresenter implements UserActionListener, SimilarImageInt } /** - * Updates the information regarding the specified place for uploads + * Updates the information regarding the specified place for the specified upload item * when the user confirms the suggested nearby place. * * @param place The place to be associated with the uploads. + * @param uploadItemIndex Index of the uploadItem whose detected place has been confirmed */ @Override - public void onUserConfirmedUploadIsOfPlace(final Place place) { - final List uploads = repository.getUploads(); - for (final UploadItem uploadItem : uploads) { - uploadItem.setPlace(place); - final List uploadMediaDetails = uploadItem.getUploadMediaDetails(); - // Update UploadMediaDetail object for this UploadItem - uploadMediaDetails.set(0, new UploadMediaDetail(place)); - } - // Now that all UploadItems and their associated UploadMediaDetail objects have been updated, + public void onUserConfirmedUploadIsOfPlace(final Place place, final int uploadItemIndex) { + final UploadItem uploadItem = repository.getUploads().get(uploadItemIndex); + + uploadItem.setPlace(place); + final List uploadMediaDetails = uploadItem.getUploadMediaDetails(); + // Update UploadMediaDetail object for this UploadItem + uploadMediaDetails.set(0, new UploadMediaDetail(place)); + + // Now that the UploadItem and its associated UploadMediaDetail objects have been updated, // update the view with the modified media details of the first upload item - view.updateMediaDetails(uploads.get(0).getUploadMediaDetails()); + view.updateMediaDetails(uploadMediaDetails); UploadActivity.setUploadIsOfAPlace(true); }