From 0fcfb8071b3fbc69f8279fcc20ae82d5e5aa323f Mon Sep 17 00:00:00 2001 From: Paul Hawke Date: Wed, 2 Jul 2025 16:14:57 -0500 Subject: [PATCH] Moved fixExtension to its own class --- .../fr/free/nrw/commons/upload/UploadItem.kt | 4 +-- .../free/nrw/commons/utils/FilenameUtils.java | 36 +++++++++++++++++++ .../java/fr/free/nrw/commons/utils/Utils.java | 32 ----------------- .../commons/utils/UtilsFixExtensionTest.kt | 2 +- 4 files changed, 39 insertions(+), 35 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/utils/FilenameUtils.java diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadItem.kt b/app/src/main/java/fr/free/nrw/commons/upload/UploadItem.kt index c756519c8..5303de0b1 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadItem.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadItem.kt @@ -1,9 +1,9 @@ package fr.free.nrw.commons.upload import android.net.Uri -import fr.free.nrw.commons.utils.Utils import fr.free.nrw.commons.filepicker.MimeTypeMapWrapper.Companion.getExtensionFromMimeType import fr.free.nrw.commons.nearby.Place +import fr.free.nrw.commons.utils.FilenameUtils import fr.free.nrw.commons.utils.ImageUtils class UploadItem( @@ -32,7 +32,7 @@ class UploadItem( * languages have been entered, the first language is used. */ val filename: String - get() = Utils.fixExtension( + get() = FilenameUtils.fixExtension( uploadMediaDetails[0].captionText, getExtensionFromMimeType(mimeType) ) diff --git a/app/src/main/java/fr/free/nrw/commons/utils/FilenameUtils.java b/app/src/main/java/fr/free/nrw/commons/utils/FilenameUtils.java new file mode 100644 index 000000000..453ab13b4 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/FilenameUtils.java @@ -0,0 +1,36 @@ +package fr.free.nrw.commons.utils; + +import java.util.Locale; +import java.util.regex.Pattern; + +public final class FilenameUtils { + + /** + * Adds extension to filename. Converts to .jpg if system provides .jpeg, adds .jpg if no extension detected + * @param title File name + * @param extension Correct extension + * @return File with correct extension + */ + public static String fixExtension(String title, String extension) { + Pattern jpegPattern = Pattern.compile("\\.jpeg$", Pattern.CASE_INSENSITIVE); + + // People are used to ".jpg" more than ".jpeg" which the system gives us. + if (extension != null && extension.toLowerCase(Locale.ENGLISH).equals("jpeg")) { + extension = "jpg"; + } + title = jpegPattern.matcher(title).replaceFirst(".jpg"); + if (extension != null && !title.toLowerCase(Locale.getDefault()) + .endsWith("." + extension.toLowerCase(Locale.ENGLISH))) { + title += "." + extension; + } + + // If extension is still null, make it jpg. (Hotfix for https://github.com/commons-app/apps-android-commons/issues/228) + // If title has an extension in it, if won't be true + if (extension == null && title.lastIndexOf(".")<=0) { + extension = "jpg"; + title += "." + extension; + } + + return title; + } +} diff --git a/app/src/main/java/fr/free/nrw/commons/utils/Utils.java b/app/src/main/java/fr/free/nrw/commons/utils/Utils.java index e3bdbb2a8..179686592 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/Utils.java +++ b/app/src/main/java/fr/free/nrw/commons/utils/Utils.java @@ -7,40 +7,8 @@ import android.text.SpannableString; import android.text.style.UnderlineSpan; import android.widget.TextView; -import java.util.Locale; -import java.util.regex.Pattern; - public class Utils { - /** - * Adds extension to filename. Converts to .jpg if system provides .jpeg, adds .jpg if no extension detected - * @param title File name - * @param extension Correct extension - * @return File with correct extension - */ - public static String fixExtension(String title, String extension) { - Pattern jpegPattern = Pattern.compile("\\.jpeg$", Pattern.CASE_INSENSITIVE); - - // People are used to ".jpg" more than ".jpeg" which the system gives us. - if (extension != null && extension.toLowerCase(Locale.ENGLISH).equals("jpeg")) { - extension = "jpg"; - } - title = jpegPattern.matcher(title).replaceFirst(".jpg"); - if (extension != null && !title.toLowerCase(Locale.getDefault()) - .endsWith("." + extension.toLowerCase(Locale.ENGLISH))) { - title += "." + extension; - } - - // If extension is still null, make it jpg. (Hotfix for https://github.com/commons-app/apps-android-commons/issues/228) - // If title has an extension in it, if won't be true - if (extension == null && title.lastIndexOf(".")<=0) { - extension = "jpg"; - title += "." + extension; - } - - return title; - } - /* *Copies the content to the clipboard * diff --git a/app/src/test/kotlin/fr/free/nrw/commons/utils/UtilsFixExtensionTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/utils/UtilsFixExtensionTest.kt index 7e826ac31..57ea6609e 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/utils/UtilsFixExtensionTest.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/utils/UtilsFixExtensionTest.kt @@ -1,6 +1,6 @@ package fr.free.nrw.commons.utils -import fr.free.nrw.commons.utils.Utils.fixExtension +import fr.free.nrw.commons.utils.FilenameUtils.fixExtension import org.junit.Assert.assertEquals import org.junit.Test