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..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 @@ -55,10 +55,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, @@ -67,7 +67,7 @@ object MediaSaverToDisk { ) } else { save( - localFile = videoUri.toUri().toFile(), + localFile = theVideoUri.toUri().toFile(), mimeType = mimeType, context = localContext, onSuccess = onSuccess, @@ -124,8 +124,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 +154,11 @@ object MediaSaverToDisk { ) } + private fun getMimeTypeFromExtension(fileName: String): String = + fileName.substringAfterLast('.', "").lowercase().let { + MimeTypeMap.getSingleton().getMimeTypeFromExtension(it).orEmpty() + } + fun save( localFile: File, mimeType: String?, @@ -175,7 +180,7 @@ object MediaSaverToDisk { ) } else { saveContentDefault( - fileName = UUID.randomUUID().toString() + ".$extension", + fileName = "${UUID.randomUUID()}.$extension", contentSource = buffer, context = context, ) @@ -206,10 +211,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) 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