From e6c413b1766cd063bc87d402ee6bdc8c9e9f471a Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Sat, 15 Mar 2025 12:13:46 +0000 Subject: [PATCH 1/4] Get mime type from extension if mime type in response header is null for a application/octet-stream content type --- .../amethyst/ui/actions/MediaSaverToDisk.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt index c005df88cc..e1eccd626a 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt @@ -43,6 +43,7 @@ import okio.IOException import okio.buffer import okio.sink import okio.source +import okio.use import java.io.File import java.util.UUID @@ -124,8 +125,8 @@ object MediaSaverToDisk { checkNotNull(contentType) { "Can't find out the content type" } val realType = - if (mimeType != null && contentType == "application/octet-stream") { - mimeType + if (contentType == "application/octet-stream") { + mimeType ?: getMimeTypeFromExtension(url) } else { contentType } @@ -154,6 +155,11 @@ object MediaSaverToDisk { ) } + private fun getMimeTypeFromExtension(fileName: String): String = + fileName.substringAfterLast('.', "").lowercase().let { + MimeTypeMap.getSingleton().getMimeTypeFromExtension(it).orEmpty() + } + fun save( localFile: File, mimeType: String?, From b58d74138d4021dae2d447b8174d29c4cee93731 Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Sat, 15 Mar 2025 13:27:46 +0000 Subject: [PATCH 2/4] cleaner code --- .../amethyst/ui/actions/MediaSaverToDisk.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt index e1eccd626a..b77ca93943 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt @@ -56,10 +56,10 @@ object MediaSaverToDisk { onSuccess: () -> Any?, onError: (Throwable) -> Any?, ) { - if (videoUri != null) { - if (!videoUri.startsWith("file")) { + videoUri?.let { theVideoUri -> + if (!theVideoUri.startsWith("file")) { downloadAndSave( - url = videoUri, + url = theVideoUri, mimeType = mimeType, context = localContext, forceProxy = forceProxy, @@ -68,7 +68,7 @@ object MediaSaverToDisk { ) } else { save( - localFile = videoUri.toUri().toFile(), + localFile = theVideoUri.toUri().toFile(), mimeType = mimeType, context = localContext, onSuccess = onSuccess, @@ -181,7 +181,7 @@ object MediaSaverToDisk { ) } else { saveContentDefault( - fileName = UUID.randomUUID().toString() + ".$extension", + fileName = "${UUID.randomUUID()}.$extension", contentSource = buffer, context = context, ) @@ -212,10 +212,9 @@ object MediaSaverToDisk { } val masterUri = - if (contentType.startsWith("image")) { - MediaStore.Images.Media.EXTERNAL_CONTENT_URI - } else { - MediaStore.Video.Media.EXTERNAL_CONTENT_URI + when { + contentType.startsWith("image") -> MediaStore.Images.Media.EXTERNAL_CONTENT_URI + else -> MediaStore.Video.Media.EXTERNAL_CONTENT_URI } val uri = contentResolver.insert(masterUri, contentValues) From b3fa6401f646276586db676e9cdcad24bc2c6ab3 Mon Sep 17 00:00:00 2001 From: David Kaspar Date: Sat, 15 Mar 2025 13:58:04 +0000 Subject: [PATCH 3/4] Remove accidental import of okio.use --- .../com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt index b77ca93943..abed7ed57d 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/MediaSaverToDisk.kt @@ -43,7 +43,6 @@ import okio.IOException import okio.buffer import okio.sink import okio.source -import okio.use import java.io.File import java.util.UUID From d4ae290364caf338bce269a9a70092145e9a5bc9 Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Sat, 15 Mar 2025 16:46:06 +0000 Subject: [PATCH 4/4] New Crowdin translations by GitHub Action --- amethyst/src/main/res/values-pl-rPL/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/amethyst/src/main/res/values-pl-rPL/strings.xml b/amethyst/src/main/res/values-pl-rPL/strings.xml index f2a494754e..265f04fefc 100644 --- a/amethyst/src/main/res/values-pl-rPL/strings.xml +++ b/amethyst/src/main/res/values-pl-rPL/strings.xml @@ -20,6 +20,7 @@ Podszywanie się Antyspołeczne zachowanie Inne + Nękanie Nieznani Ikona transmitera Autor nieznany