Avoid nested when in ProcessBodyOfReplyToEventUseCase
This commit is contained in:
parent
8fb38f57dc
commit
58201851ad
@ -19,13 +19,13 @@ package im.vector.app.features.home.room.detail.timeline.render
|
|||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.core.di.ActiveSessionHolder
|
import im.vector.app.core.di.ActiveSessionHolder
|
||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
|
import org.matrix.android.sdk.api.session.events.model.Event
|
||||||
import org.matrix.android.sdk.api.session.events.model.getPollQuestion
|
import org.matrix.android.sdk.api.session.events.model.getPollQuestion
|
||||||
import org.matrix.android.sdk.api.session.events.model.getRelationContent
|
import org.matrix.android.sdk.api.session.events.model.getRelationContent
|
||||||
import org.matrix.android.sdk.api.session.events.model.isAudioMessage
|
import org.matrix.android.sdk.api.session.events.model.isAudioMessage
|
||||||
import org.matrix.android.sdk.api.session.events.model.isFileMessage
|
import org.matrix.android.sdk.api.session.events.model.isFileMessage
|
||||||
import org.matrix.android.sdk.api.session.events.model.isImageMessage
|
import org.matrix.android.sdk.api.session.events.model.isImageMessage
|
||||||
import org.matrix.android.sdk.api.session.events.model.isLiveLocation
|
import org.matrix.android.sdk.api.session.events.model.isLiveLocation
|
||||||
import org.matrix.android.sdk.api.session.events.model.isPoll
|
|
||||||
import org.matrix.android.sdk.api.session.events.model.isPollEnd
|
import org.matrix.android.sdk.api.session.events.model.isPollEnd
|
||||||
import org.matrix.android.sdk.api.session.events.model.isPollStart
|
import org.matrix.android.sdk.api.session.events.model.isPollStart
|
||||||
import org.matrix.android.sdk.api.session.events.model.isSticker
|
import org.matrix.android.sdk.api.session.events.model.isSticker
|
||||||
@ -97,29 +97,22 @@ class ProcessBodyOfReplyToEventUseCase @Inject constructor(
|
|||||||
stringProvider.getString(R.string.message_reply_to_sender_sent_sticker)
|
stringProvider.getString(R.string.message_reply_to_sender_sent_sticker)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
repliedToEvent.isPoll() -> {
|
repliedToEvent.isPollEnd() -> {
|
||||||
val fallbackText = when {
|
val fallbackText = stringProvider.getString(R.string.message_reply_to_sender_ended_poll)
|
||||||
repliedToEvent.isPollStart() -> stringProvider.getString(R.string.message_reply_to_sender_created_poll)
|
val repliedText = getPollQuestionFromPollEnd(repliedToEvent)
|
||||||
repliedToEvent.isPollEnd() -> stringProvider.getString(R.string.message_reply_to_sender_ended_poll)
|
|
||||||
else -> ""
|
|
||||||
}
|
|
||||||
val repliedText = when {
|
|
||||||
repliedToEvent.isPollEnd() -> {
|
|
||||||
val eventId = repliedToEvent.getRelationContent()?.eventId
|
|
||||||
val relatedPollContent = activeSessionHolder
|
|
||||||
.getSafeActiveSession()
|
|
||||||
?.getRoom(repliedToEvent.roomId.orEmpty())
|
|
||||||
?.getTimelineEvent(eventId.orEmpty())
|
|
||||||
?.getLastMessageContent() as? MessagePollContent
|
|
||||||
|
|
||||||
relatedPollContent?.getBestPollCreationInfo()?.question?.getBestQuestion()
|
|
||||||
}
|
|
||||||
else -> repliedToEvent.getPollQuestion()
|
|
||||||
}
|
|
||||||
matrixFormattedBody.replaceRange(
|
matrixFormattedBody.replaceRange(
|
||||||
afterBreakingLineIndex,
|
afterBreakingLineIndex,
|
||||||
endOfBlockQuoteIndex,
|
endOfBlockQuoteIndex,
|
||||||
repliedText ?: fallbackText
|
repliedText ?: fallbackText,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
repliedToEvent.isPollStart() -> {
|
||||||
|
val fallbackText = stringProvider.getString(R.string.message_reply_to_sender_created_poll)
|
||||||
|
val repliedText = repliedToEvent.getPollQuestion()
|
||||||
|
matrixFormattedBody.replaceRange(
|
||||||
|
afterBreakingLineIndex,
|
||||||
|
endOfBlockQuoteIndex,
|
||||||
|
repliedText ?: fallbackText,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
repliedToEvent.isLiveLocation() -> {
|
repliedToEvent.isLiveLocation() -> {
|
||||||
@ -142,8 +135,25 @@ class ProcessBodyOfReplyToEventUseCase @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getEvent(eventId: String, roomId: String) =
|
private fun getEvent(eventId: String, roomId: String) =
|
||||||
|
getTimelineEvent(eventId, roomId)
|
||||||
|
?.root
|
||||||
|
|
||||||
|
private fun getTimelineEvent(eventId: String, roomId: String) =
|
||||||
activeSessionHolder.getSafeActiveSession()
|
activeSessionHolder.getSafeActiveSession()
|
||||||
?.getRoom(roomId)
|
?.getRoom(roomId)
|
||||||
?.getTimelineEvent(eventId)
|
?.getTimelineEvent(eventId)
|
||||||
?.root
|
|
||||||
|
private fun getPollQuestionFromPollEnd(event: Event): String? {
|
||||||
|
val eventId = event.getRelationContent()?.eventId.orEmpty()
|
||||||
|
val roomId = event.roomId.orEmpty()
|
||||||
|
return if (eventId.isEmpty() || roomId.isEmpty()) {
|
||||||
|
null
|
||||||
|
} else {
|
||||||
|
(getTimelineEvent(eventId, roomId)
|
||||||
|
?.getLastMessageContent() as? MessagePollContent)
|
||||||
|
?.getBestPollCreationInfo()
|
||||||
|
?.question
|
||||||
|
?.getBestQuestion()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user