Merge pull request #330 from vector-im/feature/edit_emote

Edit emote
This commit is contained in:
Benoit Marty 2019-07-11 13:34:46 +02:00 committed by GitHub
commit 77056aff94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 25 additions and 12 deletions

View File

@ -51,7 +51,8 @@ interface RelationService {
* @param reaction the reaction (preferably emoji) * @param reaction the reaction (preferably emoji)
* @param targetEventId the id of the event being reacted * @param targetEventId the id of the event being reacted
*/ */
fun sendReaction(reaction: String, targetEventId: String): Cancelable fun sendReaction(reaction: String,
targetEventId: String): Cancelable




/** /**
@ -60,7 +61,9 @@ interface RelationService {
* @param targetEventId the id of the event being reacted * @param targetEventId the id of the event being reacted
* @param myUserId used to know if a reaction event was made by the user * @param myUserId used to know if a reaction event was made by the user
*/ */
fun undoReaction(reaction: String, targetEventId: String, myUserId: String)//: Cancelable fun undoReaction(reaction: String,
targetEventId: String,
myUserId: String)//: Cancelable




/** /**
@ -69,7 +72,11 @@ interface RelationService {
* @param newBodyText The edited body * @param newBodyText The edited body
* @param compatibilityBodyText The text that will appear on clients that don't support yet edition * @param compatibilityBodyText The text that will appear on clients that don't support yet edition
*/ */
fun editTextMessage(targetEventId: String, newBodyText: String, newBodyAutoMarkdown: Boolean, compatibilityBodyText: String = "* $newBodyText"): Cancelable fun editTextMessage(targetEventId: String,
msgType: String,
newBodyText: String,
newBodyAutoMarkdown: Boolean,
compatibilityBodyText: String = "* $newBodyText"): Cancelable




/** /**
@ -79,7 +86,9 @@ interface RelationService {
* @param replyText the reply text * @param replyText the reply text
* @param autoMarkdown If true, the SDK will generate a formatted HTML message from the body text if markdown syntax is present * @param autoMarkdown If true, the SDK will generate a formatted HTML message from the body text if markdown syntax is present
*/ */
fun replyToMessage(eventReplied: TimelineEvent, replyText: String, autoMarkdown: Boolean = false): Cancelable? fun replyToMessage(eventReplied: TimelineEvent,
replyText: String,
autoMarkdown: Boolean = false): Cancelable?


fun getEventSummaryLive(eventId: String): LiveData<EventAnnotationsSummary> fun getEventSummaryLive(eventId: String): LiveData<EventAnnotationsSummary>
} }

View File

@ -25,7 +25,6 @@ import im.vector.matrix.android.api.auth.data.Credentials
import im.vector.matrix.android.api.session.crypto.CryptoService import im.vector.matrix.android.api.session.crypto.CryptoService
import im.vector.matrix.android.api.session.events.model.Event import im.vector.matrix.android.api.session.events.model.Event
import im.vector.matrix.android.api.session.room.model.EventAnnotationsSummary import im.vector.matrix.android.api.session.room.model.EventAnnotationsSummary
import im.vector.matrix.android.api.session.room.model.message.MessageType
import im.vector.matrix.android.api.session.room.model.relation.RelationService import im.vector.matrix.android.api.session.room.model.relation.RelationService
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
import im.vector.matrix.android.api.util.Cancelable import im.vector.matrix.android.api.util.Cancelable
@ -116,9 +115,13 @@ internal class DefaultRelationService @Inject constructor(private val context: C
return TimelineSendEventWorkCommon.createWork<RedactEventWorker>(redactWorkData) return TimelineSendEventWorkCommon.createWork<RedactEventWorker>(redactWorkData)
} }


override fun editTextMessage(targetEventId: String, newBodyText: String, newBodyAutoMarkdown: Boolean, compatibilityBodyText: String): Cancelable { override fun editTextMessage(targetEventId: String,
msgType: String,
newBodyText: String,
newBodyAutoMarkdown: Boolean,
compatibilityBodyText: String): Cancelable {
val event = eventFactory val event = eventFactory
.createReplaceTextEvent(roomId, targetEventId, newBodyText, newBodyAutoMarkdown, MessageType.MSGTYPE_TEXT, compatibilityBodyText) .createReplaceTextEvent(roomId, targetEventId, newBodyText, newBodyAutoMarkdown, msgType, compatibilityBodyText)
.also { .also {
saveLocalEcho(it) saveLocalEcho(it)
} }

View File

@ -99,7 +99,7 @@ internal class LocalEchoEventFactory @Inject constructor(private val credentials
body = compatibilityText, body = compatibilityText,
relatesTo = RelationDefaultContent(RelationType.REPLACE, targetEventId), relatesTo = RelationDefaultContent(RelationType.REPLACE, targetEventId),
newContent = createTextContent(newBodyText, newBodyAutoMarkdown) newContent = createTextContent(newBodyText, newBodyAutoMarkdown)
.toMessageTextContent() .toMessageTextContent(msgType)
.toContent() .toContent()
)) ))
} }

View File

@ -31,9 +31,9 @@ data class TextContent(
} }




fun TextContent.toMessageTextContent(): MessageTextContent { fun TextContent.toMessageTextContent(msgType: String = MessageType.MSGTYPE_TEXT): MessageTextContent {
return MessageTextContent( return MessageTextContent(
type = MessageType.MSGTYPE_TEXT, type = msgType,
format = MessageType.FORMAT_MATRIX_HTML.takeIf { formattedText != null }, format = MessageType.FORMAT_MATRIX_HTML.takeIf { formattedText != null },
body = text, body = text,
formattedBody = formattedText formattedBody = formattedText

View File

@ -281,7 +281,8 @@ class PushrulesConditionTest {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates. TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
} }


override fun editTextMessage(targetEventId: String, newBodyText: String, newBodyAutoMarkdown: Boolean, compatibilityBodyText: String): Cancelable { override fun editTextMessage(targetEventId: String, msgType: String, newBodyText: String,
newBodyAutoMarkdown: Boolean, compatibilityBodyText: String): Cancelable {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates. TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
} }



View File

@ -237,7 +237,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro


if (nonFormattedBody != action.text) { if (nonFormattedBody != action.text) {
room.editTextMessage(state.sendMode.timelineEvent.root.eventId room.editTextMessage(state.sendMode.timelineEvent.root.eventId
?: "", action.text, action.autoMarkdown) ?: "", messageContent?.type ?: MessageType.MSGTYPE_TEXT, action.text, action.autoMarkdown)
} else { } else {
Timber.w("Same message content, do not send edition") Timber.w("Same message content, do not send edition")
} }