Merge pull request #3049 from vector-im/feature/bma/various_fixew
Be robust to Exception.
This commit is contained in:
commit
2045a164c1
@ -24,6 +24,7 @@ import dagger.assisted.Assisted
|
|||||||
import dagger.assisted.AssistedFactory
|
import dagger.assisted.AssistedFactory
|
||||||
import dagger.assisted.AssistedInject
|
import dagger.assisted.AssistedInject
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
|
import im.vector.app.core.error.ErrorFormatter
|
||||||
import im.vector.app.core.extensions.canReact
|
import im.vector.app.core.extensions.canReact
|
||||||
import im.vector.app.core.platform.EmptyViewEvents
|
import im.vector.app.core.platform.EmptyViewEvents
|
||||||
import im.vector.app.core.platform.VectorViewModel
|
import im.vector.app.core.platform.VectorViewModel
|
||||||
@ -65,6 +66,7 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
|
|||||||
private val htmlCompressor: VectorHtmlCompressor,
|
private val htmlCompressor: VectorHtmlCompressor,
|
||||||
private val session: Session,
|
private val session: Session,
|
||||||
private val noticeEventFormatter: NoticeEventFormatter,
|
private val noticeEventFormatter: NoticeEventFormatter,
|
||||||
|
private val errorFormatter: ErrorFormatter,
|
||||||
private val stringProvider: StringProvider,
|
private val stringProvider: StringProvider,
|
||||||
private val pillsPostProcessorFactory: PillsPostProcessor.Factory,
|
private val pillsPostProcessorFactory: PillsPostProcessor.Factory,
|
||||||
private val vectorPreferences: VectorPreferences
|
private val vectorPreferences: VectorPreferences
|
||||||
@ -171,42 +173,46 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun computeMessageBody(timelineEvent: TimelineEvent): CharSequence {
|
private fun computeMessageBody(timelineEvent: TimelineEvent): CharSequence {
|
||||||
if (timelineEvent.root.isRedacted()) {
|
return try {
|
||||||
return noticeEventFormatter.formatRedactedEvent(timelineEvent.root)
|
if (timelineEvent.root.isRedacted()) {
|
||||||
}
|
noticeEventFormatter.formatRedactedEvent(timelineEvent.root)
|
||||||
|
} else {
|
||||||
|
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
|
||||||
|
|
||||||
return when (timelineEvent.root.getClearType()) {
|
eventHtmlRenderer.get().render(html, pillsPostProcessor)
|
||||||
EventType.MESSAGE,
|
} else if (messageContent is MessageVerificationRequestContent) {
|
||||||
EventType.STICKER -> {
|
stringProvider.getString(R.string.verification_request)
|
||||||
val messageContent: MessageContent? = timelineEvent.getLastMessageContent()
|
} else {
|
||||||
if (messageContent is MessageTextContent && messageContent.format == MessageFormat.FORMAT_MATRIX_HTML) {
|
messageContent?.body
|
||||||
val html = messageContent.formattedBody
|
}
|
||||||
?.takeIf { it.isNotBlank() }
|
}
|
||||||
?.let { htmlCompressor.compress(it) }
|
EventType.STATE_ROOM_NAME,
|
||||||
?: messageContent.body
|
EventType.STATE_ROOM_TOPIC,
|
||||||
|
EventType.STATE_ROOM_AVATAR,
|
||||||
eventHtmlRenderer.get().render(html, pillsPostProcessor)
|
EventType.STATE_ROOM_MEMBER,
|
||||||
} else if (messageContent is MessageVerificationRequestContent) {
|
EventType.STATE_ROOM_ALIASES,
|
||||||
stringProvider.getString(R.string.verification_request)
|
EventType.STATE_ROOM_CANONICAL_ALIAS,
|
||||||
} else {
|
EventType.STATE_ROOM_HISTORY_VISIBILITY,
|
||||||
messageContent?.body
|
EventType.STATE_ROOM_SERVER_ACL,
|
||||||
|
EventType.CALL_INVITE,
|
||||||
|
EventType.CALL_CANDIDATES,
|
||||||
|
EventType.CALL_HANGUP,
|
||||||
|
EventType.CALL_ANSWER -> {
|
||||||
|
noticeEventFormatter.format(timelineEvent)
|
||||||
|
}
|
||||||
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EventType.STATE_ROOM_NAME,
|
} catch (failure: Throwable) {
|
||||||
EventType.STATE_ROOM_TOPIC,
|
errorFormatter.toHumanReadable(failure)
|
||||||
EventType.STATE_ROOM_AVATAR,
|
|
||||||
EventType.STATE_ROOM_MEMBER,
|
|
||||||
EventType.STATE_ROOM_ALIASES,
|
|
||||||
EventType.STATE_ROOM_CANONICAL_ALIAS,
|
|
||||||
EventType.STATE_ROOM_HISTORY_VISIBILITY,
|
|
||||||
EventType.STATE_ROOM_SERVER_ACL,
|
|
||||||
EventType.CALL_INVITE,
|
|
||||||
EventType.CALL_CANDIDATES,
|
|
||||||
EventType.CALL_HANGUP,
|
|
||||||
EventType.CALL_ANSWER -> {
|
|
||||||
noticeEventFormatter.format(timelineEvent)
|
|
||||||
}
|
|
||||||
else -> null
|
|
||||||
} ?: ""
|
} ?: ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user