Skip to content

Commit 657af4f

Browse files
Fix #6409: Add listener call in ImageAdapter to update UI and upload (#6420)
* Fix #6409: Add listener call in ImageAdapter to update UI and upload button on deselection * Fix image deselection issue in ImageAdapter to update UI correctly (#6409) * Prevent duplicate image selections on multiple taps in ImageAdapter when showAlreadyActionedImages is off (#6409) --------- Co-authored-by: Nicolas Raoul <[email protected]>
1 parent 219fcd3 commit 657af4f

File tree

1 file changed

+9
-5
lines changed
  • app/src/main/java/fr/free/nrw/commons/customselector/ui/adapter

1 file changed

+9
-5
lines changed

app/src/main/java/fr/free/nrw/commons/customselector/ui/adapter/ImageAdapter.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,7 @@ class ImageAdapter(
168168

169169
// Getting selected index when switch is off
170170
} else if (actionableImagesMap.size > position) {
171-
ImageHelper
172-
.getIndex(selectedImages, ArrayList(actionableImagesMap.values)[position])
171+
ImageHelper.getIndex(selectedImages, ArrayList(actionableImagesMap.values)[position])
173172

174173
// For any other case return -1
175174
} else {
@@ -348,8 +347,14 @@ class ImageAdapter(
348347
numberOfSelectedImagesMarkedAsNotForUpload--
349348
}
350349
notifyItemChanged(position, ImageUnselected())
350+
// Notify listener of deselection to update UI
351+
imageSelectListener.onSelectedImagesChanged(selectedImages, numberOfSelectedImagesMarkedAsNotForUpload)
351352
} else {
352-
val image = images[position]
353+
// Prevent adding the same image multiple times
354+
val image = if (showAlreadyActionedImages) images[position] else ArrayList(actionableImagesMap.values)[position]
355+
if (selectedImages.contains(image)) {
356+
return // Image already selected, ignore additional clicks
357+
}
353358
scope.launch(ioDispatcher) {
354359
val imageSHA1 = imageLoader.getSHA1(image, defaultDispatcher)
355360
withContext(Dispatchers.Main) {
@@ -373,7 +378,6 @@ class ImageAdapter(
373378
}
374379
selectedImages.add(image)
375380
notifyItemChanged(position, ImageSelectedOrUpdated())
376-
377381
imageSelectListener.onSelectedImagesChanged(selectedImages, numberOfSelectedImagesMarkedAsNotForUpload)
378382
}
379383
}
@@ -632,4 +636,4 @@ class ImageAdapter(
632636
fun setSingleSelection(single: Boolean) {
633637
singleSelection = single
634638
}
635-
}
639+
}

0 commit comments

Comments
 (0)