forked from GitHub-Mirror/riotX-android
Fix messages content info can be null
This commit is contained in:
@ -21,11 +21,11 @@ import android.text.util.Linkify
|
||||
import im.vector.matrix.android.api.permalinks.MatrixLinkify
|
||||
import im.vector.matrix.android.api.permalinks.MatrixPermalinkSpan
|
||||
import im.vector.matrix.android.api.session.events.model.EventType
|
||||
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||
import im.vector.matrix.android.api.session.events.model.toModel
|
||||
import im.vector.matrix.android.api.session.room.model.message.MessageContent
|
||||
import im.vector.matrix.android.api.session.room.model.message.MessageImageContent
|
||||
import im.vector.matrix.android.api.session.room.model.message.MessageTextContent
|
||||
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||
import im.vector.riotredesign.core.extensions.localDateTime
|
||||
import im.vector.riotredesign.features.home.room.detail.timeline.helper.TimelineMediaSizeProvider
|
||||
import im.vector.riotredesign.features.media.MediaContentRenderer
|
||||
@ -76,12 +76,12 @@ class MessageItemFactory(private val timelineMediaSizeProvider: TimelineMediaSiz
|
||||
val (maxWidth, maxHeight) = timelineMediaSizeProvider.getMaxSize()
|
||||
val data = MediaContentRenderer.Data(
|
||||
url = messageContent.url,
|
||||
height = messageContent.info.height,
|
||||
height = messageContent.info?.height,
|
||||
maxHeight = maxHeight,
|
||||
width = messageContent.info.width,
|
||||
width = messageContent.info?.width,
|
||||
maxWidth = maxWidth,
|
||||
rotation = messageContent.info.rotation,
|
||||
orientation = messageContent.info.orientation
|
||||
rotation = messageContent.info?.rotation,
|
||||
orientation = messageContent.info?.orientation
|
||||
)
|
||||
return MessageImageItem(data, informationData)
|
||||
}
|
||||
|
@ -26,12 +26,12 @@ object MediaContentRenderer {
|
||||
|
||||
data class Data(
|
||||
val url: String?,
|
||||
val height: Int,
|
||||
val height: Int?,
|
||||
val maxHeight: Int,
|
||||
val width: Int,
|
||||
val maxWidth: Int = width,
|
||||
val orientation: Int,
|
||||
val rotation: Int
|
||||
val width: Int?,
|
||||
val maxWidth: Int,
|
||||
val orientation: Int?,
|
||||
val rotation: Int?
|
||||
)
|
||||
|
||||
enum class Mode {
|
||||
@ -46,10 +46,10 @@ object MediaContentRenderer {
|
||||
|
||||
val contentUrlResolver = Matrix.getInstance().currentSession.contentUrlResolver()
|
||||
val resolvedUrl = when (mode) {
|
||||
Mode.FULL_SIZE -> contentUrlResolver.resolveFullSize(data.url)
|
||||
Mode.THUMBNAIL -> contentUrlResolver.resolveThumbnail(data.url, width, height, ContentUrlResolver.ThumbnailMethod.SCALE)
|
||||
}
|
||||
?: return
|
||||
Mode.FULL_SIZE -> contentUrlResolver.resolveFullSize(data.url)
|
||||
Mode.THUMBNAIL -> contentUrlResolver.resolveThumbnail(data.url, width, height, ContentUrlResolver.ThumbnailMethod.SCALE)
|
||||
}
|
||||
?: return
|
||||
|
||||
GlideApp
|
||||
.with(imageView)
|
||||
@ -61,10 +61,10 @@ object MediaContentRenderer {
|
||||
private fun processSize(data: Data, mode: Mode): Pair<Int, Int> {
|
||||
val maxImageWidth = data.maxWidth
|
||||
val maxImageHeight = data.maxHeight
|
||||
val rotationAngle = data.rotation
|
||||
val orientation = data.orientation
|
||||
var width = data.width
|
||||
var height = data.height
|
||||
val rotationAngle = data.rotation ?: 0
|
||||
val orientation = data.orientation ?: ExifInterface.ORIENTATION_NORMAL
|
||||
var width = data.width ?: maxImageWidth
|
||||
var height = data.height ?: maxImageHeight
|
||||
var finalHeight = -1
|
||||
var finalWidth = -1
|
||||
|
||||
|
Reference in New Issue
Block a user