From 226c11af06339d233d188b5dfe91b18bd07f3e71 Mon Sep 17 00:00:00 2001 From: Kota-Jagadeesh Date: Sun, 9 Nov 2025 13:12:03 +0530 Subject: [PATCH 1/4] refactor: centralize MAX_EXTERNAL_UPLOAD_COUNT constant --- app/src/main/java/fr/free/nrw/commons/filepicker/Costants.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/filepicker/Costants.kt b/app/src/main/java/fr/free/nrw/commons/filepicker/Costants.kt index e405a6d52c..85c3095773 100644 --- a/app/src/main/java/fr/free/nrw/commons/filepicker/Costants.kt +++ b/app/src/main/java/fr/free/nrw/commons/filepicker/Costants.kt @@ -3,6 +3,8 @@ package fr.free.nrw.commons.filepicker interface Constants { companion object { const val DEFAULT_FOLDER_NAME = "CommonsContributions" + // this is used for truncation logic to cap the selection at 20 files. + const val MAX_EXTERNAL_UPLOAD_COUNT: Int = 20 } /** From 947afcd79c8b872a8a3d10d4b2e99c2b66014e65 Mon Sep 17 00:00:00 2001 From: Kota-Jagadeesh Date: Sun, 9 Nov 2025 13:12:44 +0530 Subject: [PATCH 2/4] added strings for upload list truncation notification --- app/src/main/res/values/strings.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 91db64089e..427ab77fd3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -887,4 +887,8 @@ Upload your first media by tapping on the add button. Created and uploaded by: %1$s Created by %1$s and uploaded by %2$s Nominated for Deletion + + Upload Limit Exceeded + You have selected %1$d files. The current limit for simultaneous uploads is %2$d files. Please go back and select fewer files. + You selected %1$d files. Only the first %2$d files will be processed for upload. From 3bc9820be7950b8df3e681fea7cd0bdd459de034 Mon Sep 17 00:00:00 2001 From: Kota-Jagadeesh Date: Sun, 9 Nov 2025 13:13:20 +0530 Subject: [PATCH 3/4] fix: truncate external multi-upload list to 20 instead of blocking --- .../free/nrw/commons/upload/UploadActivity.kt | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt index e83ea2c5f9..cc08513d44 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt @@ -28,6 +28,7 @@ import fr.free.nrw.commons.auth.LoginActivity import fr.free.nrw.commons.auth.SessionManager import fr.free.nrw.commons.contributions.ContributionController import fr.free.nrw.commons.databinding.ActivityUploadBinding +import fr.free.nrw.commons.filepicker.Constants.Companion.MAX_EXTERNAL_UPLOAD_COUNT//new import for centralised constant import fr.free.nrw.commons.filepicker.Constants.RequestCodes import fr.free.nrw.commons.filepicker.UploadableFile import fr.free.nrw.commons.kvstore.BasicKvStore @@ -723,7 +724,29 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C } private fun receiveExternalSharedItems() { - uploadableFiles = contributionController!!.handleExternalImagesPicked(this, intent).toMutableList() + var filesToProcess = contributionController!!.handleExternalImagesPicked(this, intent).toMutableList() + + if (intent.action == Intent.ACTION_SEND_MULTIPLE) { + val fileCount = filesToProcess.size + + // startsm truncation logic (Issue #3101) + if (fileCount > MAX_EXTERNAL_UPLOAD_COUNT) { + //truncates the list to the maximum allowed limit (20) + filesToProcess = filesToProcess.subList(0, MAX_EXTERNAL_UPLOAD_COUNT) + + // informs the the user that the list was truncated + showLongToast( + this, + getString( + R.string.multiple_upload_limit_truncated_message, + fileCount, + MAX_EXTERNAL_UPLOAD_COUNT + ) + ) + } + } + + uploadableFiles = filesToProcess } private fun receiveInternalSharedItems() { @@ -1039,3 +1062,4 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C } } } + From 0eb450ce1384c89198d8e063089bc75b5221be9f Mon Sep 17 00:00:00 2001 From: Kota-Jagadeesh Date: Sun, 9 Nov 2025 20:01:18 +0530 Subject: [PATCH 4/4] Fixed some minor issues --- .../main/java/fr/free/nrw/commons/upload/UploadActivity.kt | 5 ++--- app/src/main/res/values/strings.xml | 2 -- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt index cc08513d44..0315f5ee53 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.kt @@ -28,7 +28,7 @@ import fr.free.nrw.commons.auth.LoginActivity import fr.free.nrw.commons.auth.SessionManager import fr.free.nrw.commons.contributions.ContributionController import fr.free.nrw.commons.databinding.ActivityUploadBinding -import fr.free.nrw.commons.filepicker.Constants.Companion.MAX_EXTERNAL_UPLOAD_COUNT//new import for centralised constant +import fr.free.nrw.commons.filepicker.Constants.Companion.MAX_EXTERNAL_UPLOAD_COUNT import fr.free.nrw.commons.filepicker.Constants.RequestCodes import fr.free.nrw.commons.filepicker.UploadableFile import fr.free.nrw.commons.kvstore.BasicKvStore @@ -729,9 +729,8 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C if (intent.action == Intent.ACTION_SEND_MULTIPLE) { val fileCount = filesToProcess.size - // startsm truncation logic (Issue #3101) if (fileCount > MAX_EXTERNAL_UPLOAD_COUNT) { - //truncates the list to the maximum allowed limit (20) + //truncates the list to the maximum allowed limit (20) Issue #3101 filesToProcess = filesToProcess.subList(0, MAX_EXTERNAL_UPLOAD_COUNT) // informs the the user that the list was truncated diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 427ab77fd3..ac67ffc0df 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -888,7 +888,5 @@ Upload your first media by tapping on the add button. Created by %1$s and uploaded by %2$s Nominated for Deletion - Upload Limit Exceeded - You have selected %1$d files. The current limit for simultaneous uploads is %2$d files. Please go back and select fewer files. You selected %1$d files. Only the first %2$d files will be processed for upload.