Create method buildMediaViewerNavTarget

This commit is contained in:
Benoit Marty 2024-12-03 09:59:18 +01:00
parent ecd58293b4
commit 5443cf83c9

View file

@ -40,6 +40,7 @@ import io.element.android.features.messages.impl.timeline.TimelineController
import io.element.android.features.messages.impl.timeline.debug.EventDebugInfoNode import io.element.android.features.messages.impl.timeline.debug.EventDebugInfoNode
import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.TimelineItem
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemAudioContent
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemEventContentWithAttachment
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemFileContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemFileContent
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemImageContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemImageContent
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemLocationContent import io.element.android.features.messages.impl.timeline.model.event.TimelineItemLocationContent
@ -331,16 +332,9 @@ class MessagesFlowNode @AssistedInject constructor(
private fun processEventClick(event: TimelineItem.Event): Boolean { private fun processEventClick(event: TimelineItem.Event): Boolean {
return when (event.content) { return when (event.content) {
is TimelineItemImageContent -> { is TimelineItemImageContent -> {
val navTarget = NavTarget.MediaViewer( val navTarget = buildMediaViewerNavTarget(
mediaInfo = MediaInfo( event = event,
filename = event.content.filename, content = event.content,
caption = event.content.caption,
mimeType = event.content.mimeType,
formattedFileSize = event.content.formattedFileSize,
fileExtension = event.content.fileExtension,
senderName = event.safeSenderName,
dateSent = event.sentTime,
),
mediaSource = event.content.mediaSource, mediaSource = event.content.mediaSource,
thumbnailSource = event.content.thumbnailSource, thumbnailSource = event.content.thumbnailSource,
) )
@ -351,16 +345,9 @@ class MessagesFlowNode @AssistedInject constructor(
/* Sticker may have an empty url and no thumbnail /* Sticker may have an empty url and no thumbnail
if encrypted on certain bridges */ if encrypted on certain bridges */
if (event.content.preferredMediaSource != null) { if (event.content.preferredMediaSource != null) {
val navTarget = NavTarget.MediaViewer( val navTarget = buildMediaViewerNavTarget(
mediaInfo = MediaInfo( event = event,
filename = event.content.filename, content = event.content,
caption = event.content.caption,
mimeType = event.content.mimeType,
formattedFileSize = event.content.formattedFileSize,
fileExtension = event.content.fileExtension,
senderName = event.safeSenderName,
dateSent = event.sentTime,
),
mediaSource = event.content.preferredMediaSource, mediaSource = event.content.preferredMediaSource,
thumbnailSource = event.content.thumbnailSource, thumbnailSource = event.content.thumbnailSource,
) )
@ -371,16 +358,9 @@ class MessagesFlowNode @AssistedInject constructor(
} }
} }
is TimelineItemVideoContent -> { is TimelineItemVideoContent -> {
val navTarget = NavTarget.MediaViewer( val navTarget = buildMediaViewerNavTarget(
mediaInfo = MediaInfo( event = event,
filename = event.content.filename, content = event.content,
caption = event.content.caption,
mimeType = event.content.mimeType,
formattedFileSize = event.content.formattedFileSize,
fileExtension = event.content.fileExtension,
senderName = event.safeSenderName,
dateSent = event.sentTime,
),
mediaSource = event.content.mediaSource, mediaSource = event.content.mediaSource,
thumbnailSource = event.content.thumbnailSource, thumbnailSource = event.content.thumbnailSource,
) )
@ -388,16 +368,9 @@ class MessagesFlowNode @AssistedInject constructor(
true true
} }
is TimelineItemFileContent -> { is TimelineItemFileContent -> {
val navTarget = NavTarget.MediaViewer( val navTarget = buildMediaViewerNavTarget(
mediaInfo = MediaInfo( event = event,
filename = event.content.filename, content = event.content,
caption = event.content.caption,
mimeType = event.content.mimeType,
formattedFileSize = event.content.formattedFileSize,
fileExtension = event.content.fileExtension,
senderName = event.safeSenderName,
dateSent = event.sentTime,
),
mediaSource = event.content.mediaSource, mediaSource = event.content.mediaSource,
thumbnailSource = event.content.thumbnailSource, thumbnailSource = event.content.thumbnailSource,
) )
@ -405,16 +378,9 @@ class MessagesFlowNode @AssistedInject constructor(
true true
} }
is TimelineItemAudioContent -> { is TimelineItemAudioContent -> {
val navTarget = NavTarget.MediaViewer( val navTarget = buildMediaViewerNavTarget(
mediaInfo = MediaInfo( event = event,
filename = event.content.filename, content = event.content,
caption = event.content.caption,
mimeType = event.content.mimeType,
formattedFileSize = event.content.formattedFileSize,
fileExtension = event.content.fileExtension,
senderName = event.safeSenderName,
dateSent = event.sentTime,
),
mediaSource = event.content.mediaSource, mediaSource = event.content.mediaSource,
thumbnailSource = null, thumbnailSource = null,
) )
@ -433,6 +399,27 @@ class MessagesFlowNode @AssistedInject constructor(
} }
} }
private fun buildMediaViewerNavTarget(
event: TimelineItem.Event,
content: TimelineItemEventContentWithAttachment,
mediaSource: MediaSource,
thumbnailSource: MediaSource?,
): NavTarget {
return NavTarget.MediaViewer(
mediaInfo = MediaInfo(
filename = content.filename,
caption = content.caption,
mimeType = content.mimeType,
formattedFileSize = content.formattedFileSize,
fileExtension = content.fileExtension,
senderName = event.safeSenderName,
dateSent = event.sentTime,
),
mediaSource = mediaSource,
thumbnailSource = thumbnailSource,
)
}
@Composable @Composable
override fun View(modifier: Modifier) { override fun View(modifier: Modifier) {
mentionSpanTheme.updateStyles(currentUserId = room.sessionId) mentionSpanTheme.updateStyles(currentUserId = room.sessionId)