Browse Source

Rework: create extension method for cleaner code.

pull/3547/head
Benoit Marty 3 weeks ago
parent
commit
3093b25ecd
  1. 24
      libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt

24
libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt

@ -61,7 +61,7 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
val isOutgoing = event.isOwn val isOutgoing = event.isOwn
val senderDisambiguatedDisplayName = event.senderProfile.getDisambiguatedDisplayName(event.sender) val senderDisambiguatedDisplayName = event.senderProfile.getDisambiguatedDisplayName(event.sender)
return when (val content = event.content) { return when (val content = event.content) {
is MessageContent -> processMessageContents(content, senderDisambiguatedDisplayName, isDmRoom) is MessageContent -> content.process(senderDisambiguatedDisplayName, isDmRoom)
RedactedContent -> { RedactedContent -> {
val message = sp.getString(CommonStrings.common_message_removed) val message = sp.getString(CommonStrings.common_message_removed)
if (!isDmRoom) { if (!isDmRoom) {
@ -71,7 +71,8 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
} }
} }
is StickerContent -> { is StickerContent -> {
prefixIfNeeded(sp.getString(CommonStrings.common_sticker) + " (" + content.body + ")", senderDisambiguatedDisplayName, isDmRoom) val message = sp.getString(CommonStrings.common_sticker) + " (" + content.body + ")"
message.prefixIfNeeded(senderDisambiguatedDisplayName, isDmRoom)
} }
is UnableToDecryptContent -> { is UnableToDecryptContent -> {
val message = sp.getString(CommonStrings.common_waiting_for_decryption_key) val message = sp.getString(CommonStrings.common_waiting_for_decryption_key)
@ -92,22 +93,22 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
} }
is PollContent -> { is PollContent -> {
val message = sp.getString(CommonStrings.common_poll_summary, content.question) val message = sp.getString(CommonStrings.common_poll_summary, content.question)
prefixIfNeeded(message, senderDisambiguatedDisplayName, isDmRoom) message.prefixIfNeeded(senderDisambiguatedDisplayName, isDmRoom)
} }
is FailedToParseMessageLikeContent, is FailedToParseStateContent, is UnknownContent -> { is FailedToParseMessageLikeContent, is FailedToParseStateContent, is UnknownContent -> {
prefixIfNeeded(sp.getString(CommonStrings.common_unsupported_event), senderDisambiguatedDisplayName, isDmRoom) val message = sp.getString(CommonStrings.common_unsupported_event)
message.prefixIfNeeded(senderDisambiguatedDisplayName, isDmRoom)
} }
is LegacyCallInviteContent -> sp.getString(CommonStrings.common_call_invite) is LegacyCallInviteContent -> sp.getString(CommonStrings.common_call_invite)
is CallNotifyContent -> sp.getString(CommonStrings.common_call_started) is CallNotifyContent -> sp.getString(CommonStrings.common_call_started)
}?.take(MAX_SAFE_LENGTH) }?.take(MAX_SAFE_LENGTH)
} }
private fun processMessageContents( private fun MessageContent.process(
messageContent: MessageContent,
senderDisambiguatedDisplayName: String, senderDisambiguatedDisplayName: String,
isDmRoom: Boolean, isDmRoom: Boolean,
): CharSequence { ): CharSequence {
val internalMessage = when (val messageType: MessageType = messageContent.type) { val message = when (val messageType: MessageType = type) {
// Doesn't need a prefix // Doesn't need a prefix
is EmoteMessageType -> { is EmoteMessageType -> {
return "* $senderDisambiguatedDisplayName ${messageType.body}" return "* $senderDisambiguatedDisplayName ${messageType.body}"
@ -143,16 +144,15 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
messageType.body messageType.body
} }
} }
return prefixIfNeeded(internalMessage, senderDisambiguatedDisplayName, isDmRoom) return message.prefixIfNeeded(senderDisambiguatedDisplayName, isDmRoom)
} }
private fun prefixIfNeeded( private fun String.prefixIfNeeded(
message: String,
senderDisambiguatedDisplayName: String, senderDisambiguatedDisplayName: String,
isDmRoom: Boolean, isDmRoom: Boolean,
): CharSequence = if (isDmRoom) { ): CharSequence = if (isDmRoom) {
message this
} else { } else {
message.prefixWith(senderDisambiguatedDisplayName) prefixWith(senderDisambiguatedDisplayName)
} }
} }

Loading…
Cancel
Save