Fix messages content info can be null

This commit is contained in:
ganfra
2019-01-25 18:40:02 +01:00
parent 9b1277485e
commit ad2abd5cdd
13 changed files with 36 additions and 37 deletions

View File

@ -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)
}

View File

@ -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