From f37501ffdebb78007f185c775f53313ad2065895 Mon Sep 17 00:00:00 2001 From: Paul Hawke Date: Wed, 2 Jul 2025 20:42:58 -0500 Subject: [PATCH] Converted fixExtension to kotlin --- .../fr/free/nrw/commons/upload/UploadItem.kt | 4 +- .../free/nrw/commons/utils/FilenameUtils.java | 36 ------------------ .../fr/free/nrw/commons/utils/FixExtension.kt | 38 +++++++++++++++++++ .../commons/utils/UtilsFixExtensionTest.kt | 1 - 4 files changed, 40 insertions(+), 39 deletions(-) delete mode 100644 app/src/main/java/fr/free/nrw/commons/utils/FilenameUtils.java create mode 100644 app/src/main/java/fr/free/nrw/commons/utils/FixExtension.kt 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 5303de0b1..6d2321def 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 @@ -3,8 +3,8 @@ package fr.free.nrw.commons.upload import android.net.Uri 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 +import fr.free.nrw.commons.utils.fixExtension class UploadItem( var mediaUri: Uri?, @@ -32,7 +32,7 @@ class UploadItem( * languages have been entered, the first language is used. */ val filename: String - get() = FilenameUtils.fixExtension( + get() = 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 deleted file mode 100644 index 453ab13b4..000000000 --- a/app/src/main/java/fr/free/nrw/commons/utils/FilenameUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -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/FixExtension.kt b/app/src/main/java/fr/free/nrw/commons/utils/FixExtension.kt new file mode 100644 index 000000000..b9e3988a3 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/utils/FixExtension.kt @@ -0,0 +1,38 @@ +package fr.free.nrw.commons.utils + +import java.util.Locale +import java.util.regex.Pattern + +private val jpegPattern = Pattern.compile("\\.jpeg$", Pattern.CASE_INSENSITIVE) + +/** + * Adds extension to filename. Converts to .jpg if system provides .jpeg, adds .jpg if no extension detected + * @param theTitle File name + * @param ext Correct extension + * @return File with correct extension + */ +fun fixExtension(theTitle: String, ext: String?): String { + var result = theTitle + var extension = ext + + // People are used to ".jpg" more than ".jpeg" which the system gives us. + if (extension != null && extension.lowercase() == "jpeg") { + extension = "jpg" + } + + result = jpegPattern.matcher(result).replaceFirst(".jpg") + if (extension != null && + !result.lowercase(Locale.getDefault()).endsWith("." + extension.lowercase()) + ) { + result += ".$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 && result.lastIndexOf(".") <= 0) { + extension = "jpg" + result += ".$extension" + } + + return result +} 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 57ea6609e..f4e6a771b 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,5 @@ package fr.free.nrw.commons.utils -import fr.free.nrw.commons.utils.FilenameUtils.fixExtension import org.junit.Assert.assertEquals import org.junit.Test