Set redaction reason as message body.
This commit is contained in:
parent
8a3e93ae96
commit
1b413934b5
|
@ -171,18 +171,23 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
|
|||
return when (timelineEvent.root.getClearType()) {
|
||||
EventType.MESSAGE,
|
||||
EventType.STICKER -> {
|
||||
val messageContent: MessageContent? = timelineEvent.getLastMessageContent()
|
||||
if (messageContent is MessageTextContent && messageContent.format == MessageFormat.FORMAT_MATRIX_HTML) {
|
||||
val html = messageContent.formattedBody
|
||||
?.takeIf { it.isNotBlank() }
|
||||
?.let { htmlCompressor.compress(it) }
|
||||
?: messageContent.body
|
||||
when (timelineEvent.root.isRedacted()) {
|
||||
true -> getRedactionReason(timelineEvent)
|
||||
false -> {
|
||||
val messageContent: MessageContent? = timelineEvent.getLastMessageContent()
|
||||
if (messageContent is MessageTextContent && messageContent.format == MessageFormat.FORMAT_MATRIX_HTML) {
|
||||
val html = messageContent.formattedBody
|
||||
?.takeIf { it.isNotBlank() }
|
||||
?.let { htmlCompressor.compress(it) }
|
||||
?: messageContent.body
|
||||
|
||||
eventHtmlRenderer.get().render(html)
|
||||
} else if (messageContent is MessageVerificationRequestContent) {
|
||||
stringProvider.getString(R.string.verification_request)
|
||||
} else {
|
||||
messageContent?.body
|
||||
eventHtmlRenderer.get().render(html)
|
||||
} else if (messageContent is MessageVerificationRequestContent) {
|
||||
stringProvider.getString(R.string.verification_request)
|
||||
} else {
|
||||
messageContent?.body
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
EventType.STATE_ROOM_NAME,
|
||||
|
@ -200,6 +205,25 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
|
|||
} ?: ""
|
||||
}
|
||||
|
||||
private fun getRedactionReason(timelineEvent: TimelineEvent) =
|
||||
(timelineEvent
|
||||
.root
|
||||
.unsignedData
|
||||
?.redactedEvent
|
||||
?.content
|
||||
?.get("reason") as? String)
|
||||
?.takeIf { it.isNotBlank() }
|
||||
?.let { reason ->
|
||||
stringProvider.getString(
|
||||
(R.string.event_redacted_by_user_reason_with_reason
|
||||
.takeIf { timelineEvent.root.senderId == session.myUserId }
|
||||
?: R.string.event_redacted_by_admin_reason_with_reason), reason
|
||||
)
|
||||
} ?: stringProvider.getString(
|
||||
R.string.event_redacted_by_user_reason
|
||||
.takeIf { timelineEvent.root.senderId == session.myUserId }
|
||||
?: R.string.event_redacted_by_admin_reason_with_reason)
|
||||
|
||||
private fun actionsForEvent(timelineEvent: TimelineEvent): List<EventSharedAction> {
|
||||
val messageContent: MessageContent? = timelineEvent.annotations?.editSummary?.aggregatedContent.toModel()
|
||||
?: timelineEvent.root.getClearContent().toModel()
|
||||
|
|
|
@ -33,6 +33,9 @@
|
|||
<string name="delete_event_dialog_content">Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.</string>
|
||||
<string name="delete_event_dialog_reason_checkbox">Include a reason</string>
|
||||
<string name="delete_event_dialog_reason_hint">Reason for redacting</string>
|
||||
|
||||
<string name="event_redacted_by_user_reason_with_reason">Event deleted by user, reason: %1$s</string>
|
||||
<string name="event_redacted_by_admin_reason_with_reason">Event moderated by room admin, reason: %1$s</string>
|
||||
<!-- END Strings added by Onuray -->
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue