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, )