mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
Rename withDefaultSubtype to ensureDefaultSubtype
The old name read as though the default subtype always replaced whatever the receiver carried, when a mime type that already has a concrete subtype is returned untouched.
This commit is contained in:
+1
-1
@@ -68,7 +68,7 @@ object MimeTypes {
|
|||||||
* A mime type with a wildcard subtype is a filter, not a media type, so replace it with a
|
* A mime type with a wildcard subtype is a filter, not a media type, so replace it with a
|
||||||
* concrete default for its top level type.
|
* concrete default for its top level type.
|
||||||
*/
|
*/
|
||||||
fun String?.withDefaultSubtype(): String = when {
|
fun String?.ensureDefaultSubtype(): String = when {
|
||||||
this == null -> OctetStream
|
this == null -> OctetStream
|
||||||
hasSubtype(this) -> this
|
hasSubtype(this) -> this
|
||||||
this == Images -> Jpeg
|
this == Images -> Jpeg
|
||||||
|
|||||||
+13
-13
@@ -8,28 +8,28 @@
|
|||||||
package io.element.android.libraries.core.mimetype
|
package io.element.android.libraries.core.mimetype
|
||||||
|
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes.withDefaultSubtype
|
import io.element.android.libraries.core.mimetype.MimeTypes.ensureDefaultSubtype
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
class MimeTypesTest {
|
class MimeTypesTest {
|
||||||
@Test
|
@Test
|
||||||
fun `withDefaultSubtype keeps a mime type that already has a subtype`() {
|
fun `ensureDefaultSubtype keeps a mime type that already has a subtype`() {
|
||||||
assertThat(MimeTypes.Png.withDefaultSubtype()).isEqualTo(MimeTypes.Png)
|
assertThat(MimeTypes.Png.ensureDefaultSubtype()).isEqualTo(MimeTypes.Png)
|
||||||
assertThat(MimeTypes.Mp4.withDefaultSubtype()).isEqualTo(MimeTypes.Mp4)
|
assertThat(MimeTypes.Mp4.ensureDefaultSubtype()).isEqualTo(MimeTypes.Mp4)
|
||||||
assertThat(MimeTypes.Pdf.withDefaultSubtype()).isEqualTo(MimeTypes.Pdf)
|
assertThat(MimeTypes.Pdf.ensureDefaultSubtype()).isEqualTo(MimeTypes.Pdf)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `withDefaultSubtype replaces a wildcard subtype with a concrete one`() {
|
fun `ensureDefaultSubtype replaces a wildcard subtype with a concrete one`() {
|
||||||
assertThat(MimeTypes.Images.withDefaultSubtype()).isEqualTo(MimeTypes.Jpeg)
|
assertThat(MimeTypes.Images.ensureDefaultSubtype()).isEqualTo(MimeTypes.Jpeg)
|
||||||
assertThat(MimeTypes.Videos.withDefaultSubtype()).isEqualTo(MimeTypes.Mp4)
|
assertThat(MimeTypes.Videos.ensureDefaultSubtype()).isEqualTo(MimeTypes.Mp4)
|
||||||
assertThat(MimeTypes.Audio.withDefaultSubtype()).isEqualTo(MimeTypes.Mp3)
|
assertThat(MimeTypes.Audio.ensureDefaultSubtype()).isEqualTo(MimeTypes.Mp3)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `withDefaultSubtype falls back to octet stream`() {
|
fun `ensureDefaultSubtype falls back to octet stream`() {
|
||||||
assertThat(MimeTypes.Any.withDefaultSubtype()).isEqualTo(MimeTypes.OctetStream)
|
assertThat(MimeTypes.Any.ensureDefaultSubtype()).isEqualTo(MimeTypes.OctetStream)
|
||||||
assertThat("text/*".withDefaultSubtype()).isEqualTo(MimeTypes.OctetStream)
|
assertThat("text/*".ensureDefaultSubtype()).isEqualTo(MimeTypes.OctetStream)
|
||||||
assertThat(null.withDefaultSubtype()).isEqualTo(MimeTypes.OctetStream)
|
assertThat(null.ensureDefaultSubtype()).isEqualTo(MimeTypes.OctetStream)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ package io.element.android.libraries.matrix.impl.media
|
|||||||
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
import io.element.android.libraries.core.coroutine.CoroutineDispatchers
|
||||||
import io.element.android.libraries.core.extensions.mapFailure
|
import io.element.android.libraries.core.extensions.mapFailure
|
||||||
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes.withDefaultSubtype
|
import io.element.android.libraries.core.mimetype.MimeTypes.ensureDefaultSubtype
|
||||||
import io.element.android.libraries.matrix.api.media.MatrixMediaLoader
|
import io.element.android.libraries.matrix.api.media.MatrixMediaLoader
|
||||||
import io.element.android.libraries.matrix.api.media.MediaFile
|
import io.element.android.libraries.matrix.api.media.MediaFile
|
||||||
import io.element.android.libraries.matrix.api.media.MediaSource
|
import io.element.android.libraries.matrix.api.media.MediaSource
|
||||||
@@ -72,7 +72,7 @@ class RustMediaLoader(
|
|||||||
mediaSource = mediaSource,
|
mediaSource = mediaSource,
|
||||||
filename = filename,
|
filename = filename,
|
||||||
// Fallback to a default mime type based on the main type, so that the SDK can create a file with the correct extension.
|
// Fallback to a default mime type based on the main type, so that the SDK can create a file with the correct extension.
|
||||||
mimeType = mimeType.withDefaultSubtype(),
|
mimeType = mimeType.ensureDefaultSubtype(),
|
||||||
useCache = useCache,
|
useCache = useCache,
|
||||||
tempDir = cacheDirectory.path,
|
tempDir = cacheDirectory.path,
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-2
@@ -26,10 +26,10 @@ import io.element.android.libraries.core.data.tryOrNull
|
|||||||
import io.element.android.libraries.core.extensions.mapFailure
|
import io.element.android.libraries.core.extensions.mapFailure
|
||||||
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
import io.element.android.libraries.core.extensions.runCatchingExceptions
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes
|
import io.element.android.libraries.core.mimetype.MimeTypes
|
||||||
|
import io.element.android.libraries.core.mimetype.MimeTypes.ensureDefaultSubtype
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeAudio
|
import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeAudio
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeImage
|
import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeImage
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeVideo
|
import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeVideo
|
||||||
import io.element.android.libraries.core.mimetype.MimeTypes.withDefaultSubtype
|
|
||||||
import io.element.android.libraries.di.annotations.ApplicationContext
|
import io.element.android.libraries.di.annotations.ApplicationContext
|
||||||
import io.element.android.libraries.matrix.api.media.AudioInfo
|
import io.element.android.libraries.matrix.api.media.AudioInfo
|
||||||
import io.element.android.libraries.matrix.api.media.FileInfo
|
import io.element.android.libraries.matrix.api.media.FileInfo
|
||||||
@@ -83,7 +83,7 @@ class AndroidMediaPreProcessor(
|
|||||||
mediaOptimizationConfig: MediaOptimizationConfig,
|
mediaOptimizationConfig: MediaOptimizationConfig,
|
||||||
): Result<MediaUploadInfo> = withContext(coroutineDispatchers.computation) {
|
): Result<MediaUploadInfo> = withContext(coroutineDispatchers.computation) {
|
||||||
runCatchingExceptions {
|
runCatchingExceptions {
|
||||||
val resolvedMimeType = mimeType.withDefaultSubtype()
|
val resolvedMimeType = mimeType.ensureDefaultSubtype()
|
||||||
val result = when {
|
val result = when {
|
||||||
resolvedMimeType == MimeTypes.Svg -> processSvgImage(uri, resolvedMimeType)
|
resolvedMimeType == MimeTypes.Svg -> processSvgImage(uri, resolvedMimeType)
|
||||||
resolvedMimeType.isMimeTypeImage() -> {
|
resolvedMimeType.isMimeTypeImage() -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user