From c704a47d58ad6bafab54edce881b9e0eb0806abd Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 5 Jun 2025 16:22:27 +0200 Subject: [PATCH] Let the SDK set a correct extension to downloaded file by providing a full mimetype when a base mimetype is available. Fixes #4803 --- .../libraries/matrix/impl/media/RustMediaLoader.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt index 9fb527b50e..d846321811 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/media/RustMediaLoader.kt @@ -72,7 +72,15 @@ class RustMediaLoader( val mediaFile = innerClient.getMediaFile( mediaSource = mediaSource, filename = filename, - mimeType = mimeType?.takeIf { MimeTypes.hasSubtype(it) } ?: MimeTypes.OctetStream, + mimeType = when { + mimeType == null -> MimeTypes.OctetStream + MimeTypes.hasSubtype(mimeType) -> mimeType + // Fallback to a default mime type based on the main type, so that the SDK can create a file with the correct extension. + mimeType == MimeTypes.Images -> MimeTypes.Jpeg + mimeType == MimeTypes.Videos -> MimeTypes.Mp4 + mimeType == MimeTypes.Audio -> MimeTypes.Mp3 + else -> MimeTypes.OctetStream + }, useCache = useCache, tempDir = cacheDirectory.path, )