diff --git a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt b/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt index c7efd8c0ad..82bb110455 100644 --- a/libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt +++ b/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 senderDisambiguatedDisplayName = event.senderProfile.getDisambiguatedDisplayName(event.sender) return when (val content = event.content) { - is MessageContent -> processMessageContents(content, senderDisambiguatedDisplayName, isDmRoom) + is MessageContent -> content.process(senderDisambiguatedDisplayName, isDmRoom) RedactedContent -> { val message = sp.getString(CommonStrings.common_message_removed) if (!isDmRoom) { @@ -71,7 +71,8 @@ class DefaultRoomLastMessageFormatter @Inject constructor( } } 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 -> { val message = sp.getString(CommonStrings.common_waiting_for_decryption_key) @@ -92,22 +93,22 @@ class DefaultRoomLastMessageFormatter @Inject constructor( } is PollContent -> { val message = sp.getString(CommonStrings.common_poll_summary, content.question) - prefixIfNeeded(message, senderDisambiguatedDisplayName, isDmRoom) + message.prefixIfNeeded(senderDisambiguatedDisplayName, isDmRoom) } 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 CallNotifyContent -> sp.getString(CommonStrings.common_call_started) }?.take(MAX_SAFE_LENGTH) } - private fun processMessageContents( - messageContent: MessageContent, + private fun MessageContent.process( senderDisambiguatedDisplayName: String, isDmRoom: Boolean, ): CharSequence { - val internalMessage = when (val messageType: MessageType = messageContent.type) { + val message = when (val messageType: MessageType = type) { // Doesn't need a prefix is EmoteMessageType -> { return "* $senderDisambiguatedDisplayName ${messageType.body}" @@ -143,16 +144,15 @@ class DefaultRoomLastMessageFormatter @Inject constructor( messageType.body } } - return prefixIfNeeded(internalMessage, senderDisambiguatedDisplayName, isDmRoom) + return message.prefixIfNeeded(senderDisambiguatedDisplayName, isDmRoom) } - private fun prefixIfNeeded( - message: String, + private fun String.prefixIfNeeded( senderDisambiguatedDisplayName: String, isDmRoom: Boolean, ): CharSequence = if (isDmRoom) { - message + this } else { - message.prefixWith(senderDisambiguatedDisplayName) + prefixWith(senderDisambiguatedDisplayName) } }