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 80443d68afecff119037cd6779707ccd2f637693..a9a4545fa5ab58ba7652040ca1e1427a5a35eeaf 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,