Be robust to Exception.

And display details about it in the bottom sheet
This commit is contained in:
Benoit Marty 2021-03-23 21:09:52 +01:00 committed by Benoit Marty
parent 2b70a8450c
commit 024dcf1f6c
1 changed files with 39 additions and 33 deletions

View File

@ -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,11 +173,11 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
} }
private fun computeMessageBody(timelineEvent: TimelineEvent): CharSequence { private fun computeMessageBody(timelineEvent: TimelineEvent): CharSequence {
return try {
if (timelineEvent.root.isRedacted()) { if (timelineEvent.root.isRedacted()) {
return noticeEventFormatter.formatRedactedEvent(timelineEvent.root) noticeEventFormatter.formatRedactedEvent(timelineEvent.root)
} } else {
when (timelineEvent.root.getClearType()) {
return when (timelineEvent.root.getClearType()) {
EventType.MESSAGE, EventType.MESSAGE,
EventType.STICKER -> { EventType.STICKER -> {
val messageContent: MessageContent? = timelineEvent.getLastMessageContent() val messageContent: MessageContent? = timelineEvent.getLastMessageContent()
@ -207,6 +209,10 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
noticeEventFormatter.format(timelineEvent) noticeEventFormatter.format(timelineEvent)
} }
else -> null else -> null
}
}
} catch (failure: Throwable) {
errorFormatter.toHumanReadable(failure)
} ?: "" } ?: ""
} }