mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-04 01:19:33 +00:00
Move more fields to TimelineItemEventContentWithAttachment
This commit is contained in:
+2
-2
@@ -381,7 +381,7 @@ class MessagesFlowNode @AssistedInject constructor(
|
|||||||
senderName = event.safeSenderName,
|
senderName = event.safeSenderName,
|
||||||
dateSent = event.sentTime,
|
dateSent = event.sentTime,
|
||||||
),
|
),
|
||||||
mediaSource = event.content.videoSource,
|
mediaSource = event.content.mediaSource,
|
||||||
thumbnailSource = event.content.thumbnailSource,
|
thumbnailSource = event.content.thumbnailSource,
|
||||||
)
|
)
|
||||||
overlay.show(navTarget)
|
overlay.show(navTarget)
|
||||||
@@ -398,7 +398,7 @@ class MessagesFlowNode @AssistedInject constructor(
|
|||||||
senderName = event.safeSenderName,
|
senderName = event.safeSenderName,
|
||||||
dateSent = event.sentTime,
|
dateSent = event.sentTime,
|
||||||
),
|
),
|
||||||
mediaSource = event.content.fileSource,
|
mediaSource = event.content.mediaSource,
|
||||||
thumbnailSource = event.content.thumbnailSource,
|
thumbnailSource = event.content.thumbnailSource,
|
||||||
)
|
)
|
||||||
overlay.show(navTarget)
|
overlay.show(navTarget)
|
||||||
|
|||||||
+4
-2
@@ -147,7 +147,7 @@ class TimelineItemContentMessageFactory @Inject constructor(
|
|||||||
formattedCaption = parseHtml(messageType.formattedCaption) ?: messageType.caption?.withLinks(),
|
formattedCaption = parseHtml(messageType.formattedCaption) ?: messageType.caption?.withLinks(),
|
||||||
isEdited = content.isEdited,
|
isEdited = content.isEdited,
|
||||||
thumbnailSource = messageType.info?.thumbnailSource,
|
thumbnailSource = messageType.info?.thumbnailSource,
|
||||||
videoSource = messageType.source,
|
mediaSource = messageType.source,
|
||||||
mimeType = messageType.info?.mimetype ?: MimeTypes.OctetStream,
|
mimeType = messageType.info?.mimetype ?: MimeTypes.OctetStream,
|
||||||
width = messageType.info?.width?.toInt(),
|
width = messageType.info?.width?.toInt(),
|
||||||
height = messageType.info?.height?.toInt(),
|
height = messageType.info?.height?.toInt(),
|
||||||
@@ -186,6 +186,8 @@ class TimelineItemContentMessageFactory @Inject constructor(
|
|||||||
duration = messageType.info?.duration ?: Duration.ZERO,
|
duration = messageType.info?.duration ?: Duration.ZERO,
|
||||||
mimeType = messageType.info?.mimetype ?: MimeTypes.OctetStream,
|
mimeType = messageType.info?.mimetype ?: MimeTypes.OctetStream,
|
||||||
waveform = messageType.details?.waveform?.toImmutableList() ?: persistentListOf(),
|
waveform = messageType.details?.waveform?.toImmutableList() ?: persistentListOf(),
|
||||||
|
formattedFileSize = fileSizeFormatter.format(messageType.info?.size ?: 0),
|
||||||
|
fileExtension = fileExtensionExtractor.extractFromName(messageType.filename)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
false -> {
|
false -> {
|
||||||
@@ -211,7 +213,7 @@ class TimelineItemContentMessageFactory @Inject constructor(
|
|||||||
formattedCaption = parseHtml(messageType.formattedCaption) ?: messageType.caption?.withLinks(),
|
formattedCaption = parseHtml(messageType.formattedCaption) ?: messageType.caption?.withLinks(),
|
||||||
isEdited = content.isEdited,
|
isEdited = content.isEdited,
|
||||||
thumbnailSource = messageType.info?.thumbnailSource,
|
thumbnailSource = messageType.info?.thumbnailSource,
|
||||||
fileSource = messageType.source,
|
mediaSource = messageType.source,
|
||||||
mimeType = messageType.info?.mimetype ?: MimeTypes.fromFileExtension(fileExtension),
|
mimeType = messageType.info?.mimetype ?: MimeTypes.fromFileExtension(fileExtension),
|
||||||
formattedFileSize = fileSizeFormatter.format(messageType.info?.size ?: 0),
|
formattedFileSize = fileSizeFormatter.format(messageType.info?.size ?: 0),
|
||||||
fileExtension = fileExtension
|
fileExtension = fileExtension
|
||||||
|
|||||||
+4
-4
@@ -17,10 +17,10 @@ data class TimelineItemAudioContent(
|
|||||||
override val formattedCaption: CharSequence?,
|
override val formattedCaption: CharSequence?,
|
||||||
override val isEdited: Boolean,
|
override val isEdited: Boolean,
|
||||||
val duration: Duration,
|
val duration: Duration,
|
||||||
val mediaSource: MediaSource,
|
override val mediaSource: MediaSource,
|
||||||
val mimeType: String,
|
override val mimeType: String,
|
||||||
val formattedFileSize: String,
|
override val formattedFileSize: String,
|
||||||
val fileExtension: String,
|
override val fileExtension: String,
|
||||||
) : TimelineItemEventContentWithAttachment {
|
) : TimelineItemEventContentWithAttachment {
|
||||||
val fileExtensionAndSize =
|
val fileExtensionAndSize =
|
||||||
formatFileExtensionAndSize(
|
formatFileExtensionAndSize(
|
||||||
|
|||||||
+5
@@ -8,6 +8,7 @@
|
|||||||
package io.element.android.features.messages.impl.timeline.model.event
|
package io.element.android.features.messages.impl.timeline.model.event
|
||||||
|
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
|
import io.element.android.libraries.matrix.api.media.MediaSource
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
sealed interface TimelineItemEventContent {
|
sealed interface TimelineItemEventContent {
|
||||||
@@ -26,6 +27,10 @@ sealed interface TimelineItemEventContentWithAttachment :
|
|||||||
val filename: String
|
val filename: String
|
||||||
val caption: String?
|
val caption: String?
|
||||||
val formattedCaption: CharSequence?
|
val formattedCaption: CharSequence?
|
||||||
|
val mediaSource: MediaSource
|
||||||
|
val mimeType: String
|
||||||
|
val formattedFileSize: String
|
||||||
|
val fileExtension: String
|
||||||
|
|
||||||
val bestDescription: String
|
val bestDescription: String
|
||||||
get() = caption ?: filename
|
get() = caption ?: filename
|
||||||
|
|||||||
+4
-4
@@ -15,11 +15,11 @@ data class TimelineItemFileContent(
|
|||||||
override val caption: String?,
|
override val caption: String?,
|
||||||
override val formattedCaption: CharSequence?,
|
override val formattedCaption: CharSequence?,
|
||||||
override val isEdited: Boolean,
|
override val isEdited: Boolean,
|
||||||
val fileSource: MediaSource,
|
override val mediaSource: MediaSource,
|
||||||
val thumbnailSource: MediaSource?,
|
val thumbnailSource: MediaSource?,
|
||||||
val formattedFileSize: String,
|
override val formattedFileSize: String,
|
||||||
val fileExtension: String,
|
override val fileExtension: String,
|
||||||
val mimeType: String,
|
override val mimeType: String,
|
||||||
) : TimelineItemEventContentWithAttachment {
|
) : TimelineItemEventContentWithAttachment {
|
||||||
override val type: String = "TimelineItemFileContent"
|
override val type: String = "TimelineItemFileContent"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ fun aTimelineItemFileContent(
|
|||||||
formattedCaption = null,
|
formattedCaption = null,
|
||||||
isEdited = false,
|
isEdited = false,
|
||||||
thumbnailSource = null,
|
thumbnailSource = null,
|
||||||
fileSource = MediaSource(url = ""),
|
mediaSource = MediaSource(url = ""),
|
||||||
mimeType = MimeTypes.Pdf,
|
mimeType = MimeTypes.Pdf,
|
||||||
formattedFileSize = "100kB",
|
formattedFileSize = "100kB",
|
||||||
fileExtension = "pdf"
|
fileExtension = "pdf"
|
||||||
|
|||||||
+4
-4
@@ -18,11 +18,11 @@ data class TimelineItemImageContent(
|
|||||||
override val caption: String?,
|
override val caption: String?,
|
||||||
override val formattedCaption: CharSequence?,
|
override val formattedCaption: CharSequence?,
|
||||||
override val isEdited: Boolean,
|
override val isEdited: Boolean,
|
||||||
val mediaSource: MediaSource,
|
override val mediaSource: MediaSource,
|
||||||
val thumbnailSource: MediaSource?,
|
val thumbnailSource: MediaSource?,
|
||||||
val formattedFileSize: String,
|
override val formattedFileSize: String,
|
||||||
val fileExtension: String,
|
override val fileExtension: String,
|
||||||
val mimeType: String,
|
override val mimeType: String,
|
||||||
val blurhash: String?,
|
val blurhash: String?,
|
||||||
val width: Int?,
|
val width: Int?,
|
||||||
val height: Int?,
|
val height: Int?,
|
||||||
|
|||||||
+4
-4
@@ -14,11 +14,11 @@ data class TimelineItemStickerContent(
|
|||||||
override val caption: String?,
|
override val caption: String?,
|
||||||
override val formattedCaption: CharSequence?,
|
override val formattedCaption: CharSequence?,
|
||||||
override val isEdited: Boolean,
|
override val isEdited: Boolean,
|
||||||
val mediaSource: MediaSource,
|
override val mediaSource: MediaSource,
|
||||||
val thumbnailSource: MediaSource?,
|
val thumbnailSource: MediaSource?,
|
||||||
val formattedFileSize: String,
|
override val formattedFileSize: String,
|
||||||
val fileExtension: String,
|
override val fileExtension: String,
|
||||||
val mimeType: String,
|
override val mimeType: String,
|
||||||
val blurhash: String?,
|
val blurhash: String?,
|
||||||
val width: Int?,
|
val width: Int?,
|
||||||
val height: Int?,
|
val height: Int?,
|
||||||
|
|||||||
+4
-4
@@ -16,7 +16,7 @@ data class TimelineItemVideoContent(
|
|||||||
override val formattedCaption: CharSequence?,
|
override val formattedCaption: CharSequence?,
|
||||||
override val isEdited: Boolean,
|
override val isEdited: Boolean,
|
||||||
val duration: Duration,
|
val duration: Duration,
|
||||||
val videoSource: MediaSource,
|
override val mediaSource: MediaSource,
|
||||||
val thumbnailSource: MediaSource?,
|
val thumbnailSource: MediaSource?,
|
||||||
val aspectRatio: Float?,
|
val aspectRatio: Float?,
|
||||||
val blurHash: String?,
|
val blurHash: String?,
|
||||||
@@ -24,9 +24,9 @@ data class TimelineItemVideoContent(
|
|||||||
val width: Int?,
|
val width: Int?,
|
||||||
val thumbnailWidth: Int?,
|
val thumbnailWidth: Int?,
|
||||||
val thumbnailHeight: Int?,
|
val thumbnailHeight: Int?,
|
||||||
val mimeType: String,
|
override val mimeType: String,
|
||||||
val formattedFileSize: String,
|
override val formattedFileSize: String,
|
||||||
val fileExtension: String,
|
override val fileExtension: String,
|
||||||
) : TimelineItemEventContentWithAttachment {
|
) : TimelineItemEventContentWithAttachment {
|
||||||
override val type: String = "TimelineItemImageContent"
|
override val type: String = "TimelineItemImageContent"
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ fun aTimelineItemVideoContent(
|
|||||||
blurHash = blurhash,
|
blurHash = blurhash,
|
||||||
aspectRatio = aspectRatio,
|
aspectRatio = aspectRatio,
|
||||||
duration = 100.milliseconds,
|
duration = 100.milliseconds,
|
||||||
videoSource = MediaSource(""),
|
mediaSource = MediaSource(""),
|
||||||
width = 150,
|
width = 150,
|
||||||
height = 300,
|
height = 300,
|
||||||
thumbnailWidth = 150,
|
thumbnailWidth = 150,
|
||||||
|
|||||||
+4
-2
@@ -19,8 +19,10 @@ data class TimelineItemVoiceContent(
|
|||||||
override val formattedCaption: CharSequence?,
|
override val formattedCaption: CharSequence?,
|
||||||
override val isEdited: Boolean,
|
override val isEdited: Boolean,
|
||||||
val duration: Duration,
|
val duration: Duration,
|
||||||
val mediaSource: MediaSource,
|
override val mediaSource: MediaSource,
|
||||||
val mimeType: String,
|
override val formattedFileSize: String,
|
||||||
|
override val fileExtension: String,
|
||||||
|
override val mimeType: String,
|
||||||
val waveform: ImmutableList<Float>,
|
val waveform: ImmutableList<Float>,
|
||||||
) : TimelineItemEventContentWithAttachment {
|
) : TimelineItemEventContentWithAttachment {
|
||||||
override val type: String = "TimelineItemAudioContent"
|
override val type: String = "TimelineItemAudioContent"
|
||||||
|
|||||||
+2
@@ -53,4 +53,6 @@ fun aTimelineItemVoiceContent(
|
|||||||
mediaSource = mediaSource,
|
mediaSource = mediaSource,
|
||||||
mimeType = mimeType,
|
mimeType = mimeType,
|
||||||
waveform = waveform.toPersistentList(),
|
waveform = waveform.toPersistentList(),
|
||||||
|
formattedFileSize = "1.0 MB",
|
||||||
|
fileExtension = "ogg",
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-2
@@ -371,7 +371,7 @@ class MessagesPresenterTest {
|
|||||||
formattedCaption = null,
|
formattedCaption = null,
|
||||||
isEdited = false,
|
isEdited = false,
|
||||||
duration = 10.milliseconds,
|
duration = 10.milliseconds,
|
||||||
videoSource = MediaSource(AN_AVATAR_URL),
|
mediaSource = MediaSource(AN_AVATAR_URL),
|
||||||
thumbnailSource = MediaSource(AN_AVATAR_URL),
|
thumbnailSource = MediaSource(AN_AVATAR_URL),
|
||||||
mimeType = MimeTypes.Mp4,
|
mimeType = MimeTypes.Mp4,
|
||||||
blurHash = null,
|
blurHash = null,
|
||||||
@@ -413,7 +413,7 @@ class MessagesPresenterTest {
|
|||||||
caption = null,
|
caption = null,
|
||||||
isEdited = false,
|
isEdited = false,
|
||||||
formattedCaption = null,
|
formattedCaption = null,
|
||||||
fileSource = MediaSource(AN_AVATAR_URL),
|
mediaSource = MediaSource(AN_AVATAR_URL),
|
||||||
thumbnailSource = MediaSource(AN_AVATAR_URL),
|
thumbnailSource = MediaSource(AN_AVATAR_URL),
|
||||||
formattedFileSize = "10 MB",
|
formattedFileSize = "10 MB",
|
||||||
mimeType = MimeTypes.Pdf,
|
mimeType = MimeTypes.Pdf,
|
||||||
|
|||||||
+10
-6
@@ -239,7 +239,7 @@ class TimelineItemContentMessageFactoryTest {
|
|||||||
formattedCaption = null,
|
formattedCaption = null,
|
||||||
isEdited = false,
|
isEdited = false,
|
||||||
duration = Duration.ZERO,
|
duration = Duration.ZERO,
|
||||||
videoSource = MediaSource(url = "url", json = null),
|
mediaSource = MediaSource(url = "url", json = null),
|
||||||
thumbnailSource = null,
|
thumbnailSource = null,
|
||||||
aspectRatio = null,
|
aspectRatio = null,
|
||||||
blurHash = null,
|
blurHash = null,
|
||||||
@@ -291,7 +291,7 @@ class TimelineItemContentMessageFactoryTest {
|
|||||||
formattedCaption = SpannedString("formatted"),
|
formattedCaption = SpannedString("formatted"),
|
||||||
isEdited = true,
|
isEdited = true,
|
||||||
duration = 1.minutes,
|
duration = 1.minutes,
|
||||||
videoSource = MediaSource(url = "url", json = null),
|
mediaSource = MediaSource(url = "url", json = null),
|
||||||
thumbnailSource = MediaSource("url_thumbnail"),
|
thumbnailSource = MediaSource("url_thumbnail"),
|
||||||
aspectRatio = 3f,
|
aspectRatio = 3f,
|
||||||
blurHash = A_BLUR_HASH,
|
blurHash = A_BLUR_HASH,
|
||||||
@@ -380,7 +380,9 @@ class TimelineItemContentMessageFactoryTest {
|
|||||||
duration = Duration.ZERO,
|
duration = Duration.ZERO,
|
||||||
mediaSource = MediaSource(url = "url", json = null),
|
mediaSource = MediaSource(url = "url", json = null),
|
||||||
mimeType = MimeTypes.OctetStream,
|
mimeType = MimeTypes.OctetStream,
|
||||||
waveform = emptyList<Float>().toImmutableList()
|
waveform = emptyList<Float>().toImmutableList(),
|
||||||
|
fileExtension = "",
|
||||||
|
formattedFileSize = "",
|
||||||
)
|
)
|
||||||
assertThat(result).isEqualTo(expected)
|
assertThat(result).isEqualTo(expected)
|
||||||
}
|
}
|
||||||
@@ -419,7 +421,9 @@ class TimelineItemContentMessageFactoryTest {
|
|||||||
duration = 1.minutes,
|
duration = 1.minutes,
|
||||||
mediaSource = MediaSource(url = "url", json = null),
|
mediaSource = MediaSource(url = "url", json = null),
|
||||||
mimeType = MimeTypes.Ogg,
|
mimeType = MimeTypes.Ogg,
|
||||||
waveform = persistentListOf(1f, 2f)
|
waveform = persistentListOf(1f, 2f),
|
||||||
|
fileExtension = "",
|
||||||
|
formattedFileSize = "",
|
||||||
)
|
)
|
||||||
assertThat(result).isEqualTo(expected)
|
assertThat(result).isEqualTo(expected)
|
||||||
}
|
}
|
||||||
@@ -571,7 +575,7 @@ class TimelineItemContentMessageFactoryTest {
|
|||||||
caption = null,
|
caption = null,
|
||||||
formattedCaption = null,
|
formattedCaption = null,
|
||||||
isEdited = false,
|
isEdited = false,
|
||||||
fileSource = MediaSource(url = "url", json = null),
|
mediaSource = MediaSource(url = "url", json = null),
|
||||||
thumbnailSource = null,
|
thumbnailSource = null,
|
||||||
formattedFileSize = "0 Bytes",
|
formattedFileSize = "0 Bytes",
|
||||||
fileExtension = "",
|
fileExtension = "",
|
||||||
@@ -612,7 +616,7 @@ class TimelineItemContentMessageFactoryTest {
|
|||||||
caption = null,
|
caption = null,
|
||||||
formattedCaption = null,
|
formattedCaption = null,
|
||||||
isEdited = true,
|
isEdited = true,
|
||||||
fileSource = MediaSource(url = "url", json = null),
|
mediaSource = MediaSource(url = "url", json = null),
|
||||||
thumbnailSource = MediaSource("url_thumbnail"),
|
thumbnailSource = MediaSource("url_thumbnail"),
|
||||||
formattedFileSize = "123 Bytes",
|
formattedFileSize = "123 Bytes",
|
||||||
fileExtension = "pdf",
|
fileExtension = "pdf",
|
||||||
|
|||||||
Reference in New Issue
Block a user