From d02420aab41313896c763f0caf94d1a2dfed9ac8 Mon Sep 17 00:00:00 2001
From: Taras <tarassmakula@gmail.com>
Date: Sat, 26 Feb 2022 01:09:04 +0200
Subject: [PATCH] Create image content model and mapping

---
 .../circles/mapping/TimelineEventMapping.kt   | 20 +++++++++++++++----
 .../com/futo/circles/model/PostContent.kt     |  9 ++++++++-
 2 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/app/src/main/java/com/futo/circles/mapping/TimelineEventMapping.kt b/app/src/main/java/com/futo/circles/mapping/TimelineEventMapping.kt
index e6474a033..dffc8ac44 100644
--- a/app/src/main/java/com/futo/circles/mapping/TimelineEventMapping.kt
+++ b/app/src/main/java/com/futo/circles/mapping/TimelineEventMapping.kt
@@ -1,12 +1,15 @@
 package com.futo.circles.mapping
 
+import com.bumptech.glide.request.target.Target
 import com.futo.circles.model.*
 import org.matrix.android.sdk.api.session.events.model.toModel
 import org.matrix.android.sdk.api.session.room.model.message.MessageImageContent
 import org.matrix.android.sdk.api.session.room.model.message.MessageTextContent
+import org.matrix.android.sdk.api.session.room.model.message.getFileUrl
 import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
 import org.matrix.android.sdk.api.session.room.timeline.getRelationContent
 import org.matrix.android.sdk.api.session.room.timeline.isReply
+import org.matrix.android.sdk.internal.crypto.attachments.toElementToDecrypt
 
 
 fun TimelineEvent.toPost(
@@ -45,7 +48,16 @@ private fun TimelineEvent.toTextContent(): TextContent = TextContent(
     message = root.getClearContent().toModel<MessageTextContent>()?.body ?: ""
 )
 
-private fun TimelineEvent.toImageContent(): ImageContent = ImageContent(
-    url = root.getClearContent()
-        .toModel<MessageImageContent>()?.info?.thumbnailFile?.url ?: ""
-)
+private fun TimelineEvent.toImageContent(): ImageContent {
+    val messageContent = root.getClearContent().toModel<MessageImageContent>()
+
+    return ImageContent(
+        fileName = messageContent?.body ?: "",
+        mimeType = messageContent?.mimeType ?: "",
+        fileUrl = messageContent?.getFileUrl() ?: "",
+        thumbnailUrl = messageContent?.info?.thumbnailFile?.url ?: "",
+        width = messageContent?.info?.width ?: Target.SIZE_ORIGINAL,
+        height = messageContent?.info?.height ?: Target.SIZE_ORIGINAL,
+        elementToDecrypt = messageContent?.encryptedFileInfo?.toElementToDecrypt(),
+    )
+}
diff --git a/app/src/main/java/com/futo/circles/model/PostContent.kt b/app/src/main/java/com/futo/circles/model/PostContent.kt
index 04b63f497..58a06760b 100644
--- a/app/src/main/java/com/futo/circles/model/PostContent.kt
+++ b/app/src/main/java/com/futo/circles/model/PostContent.kt
@@ -1,6 +1,7 @@
 package com.futo.circles.model
 
 import org.matrix.android.sdk.api.session.room.model.message.MessageType
+import org.matrix.android.sdk.internal.crypto.attachments.ElementToDecrypt
 
 enum class PostContentType(val typeKey: String) {
     TEXT_CONTENT(MessageType.MSGTYPE_TEXT), IMAGE_CONTENT(MessageType.MSGTYPE_IMAGE)
@@ -13,5 +14,11 @@ data class TextContent(
 ) : PostContent(PostContentType.TEXT_CONTENT)
 
 data class ImageContent(
-    val url: String
+    val fileName: String,
+    val mimeType: String,
+    val fileUrl: String,
+    val thumbnailUrl: String,
+    val elementToDecrypt: ElementToDecrypt?,
+    val width: Int,
+    val height: Int
 ) : PostContent(PostContentType.IMAGE_CONTENT)
\ No newline at end of file
-- 
GitLab