From c3652affacf6e0d5e74a1382a4f2300dede43747 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Fri, 28 Jul 2023 17:13:45 +0300
Subject: [PATCH] Create test method for media caption edit

---
 .../timeline/post/SendMessageDataSource.kt    | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/core/src/main/java/org/futo/circles/core/timeline/post/SendMessageDataSource.kt b/core/src/main/java/org/futo/circles/core/timeline/post/SendMessageDataSource.kt
index 80443d68a..a9a4545fa 100644
--- a/core/src/main/java/org/futo/circles/core/timeline/post/SendMessageDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/timeline/post/SendMessageDataSource.kt
@@ -13,10 +13,20 @@ import org.futo.circles.core.extensions.toVideoContentAttachmentData
 import org.futo.circles.core.model.CreatePollContent
 import org.futo.circles.core.model.MediaType
 import org.futo.circles.core.provider.MatrixSessionProvider
+import org.matrix.android.sdk.api.session.events.model.Event
+import org.matrix.android.sdk.api.session.events.model.EventType
+import org.matrix.android.sdk.api.session.events.model.LocalEcho
+import org.matrix.android.sdk.api.session.events.model.RelationType
+import org.matrix.android.sdk.api.session.events.model.UnsignedData
+import org.matrix.android.sdk.api.session.events.model.toContent
+import org.matrix.android.sdk.api.session.events.model.toModel
 import org.matrix.android.sdk.api.session.getRoom
 import org.matrix.android.sdk.api.session.room.Room
 import org.matrix.android.sdk.api.session.room.getTimelineEvent
+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.MessageType
+import org.matrix.android.sdk.api.session.room.model.relation.RelationDefaultContent
 import org.matrix.android.sdk.api.util.Cancelable
 import org.matrix.android.sdk.api.util.CancelableBag
 import org.matrix.android.sdk.internal.util.CancelableWork
@@ -54,6 +64,18 @@ class SendMessageDataSource @Inject constructor(@ApplicationContext private val
             .editTextMessage(event, MessageType.MSGTYPE_TEXT, message, null, false)
     }
 
+    fun editMediaCaption(eventId: String, roomId: String, message: String) {
+        val roomForMessage = session?.getRoom(roomId) ?: return
+        val event = roomForMessage.getTimelineEvent(eventId)?.root ?: return
+        val additionalContent = mutableMapOf<String, Any>().apply {
+            this[MediaCaptionFieldKey] = "edited caption"
+        }
+        val editedEventContent = event.getClearContent().toModel<MessageImageContent>()?.copy(
+            relatesTo = RelationDefaultContent(RelationType.REPLACE, eventId),
+        ).toContent().plus(additionalContent)
+        roomForMessage.sendService().sendEvent(EventType.MESSAGE, editedEventContent)
+    }
+
     suspend fun sendMedia(
         roomId: String,
         uri: Uri,
-- 
GitLab