Rework: create extension method for cleaner code.

This commit is contained in:
Benoit Marty
2024-09-26 15:27:33 +02:00
parent 87f642918e
commit bc9ea1c18c

View File

@@ -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)
}
}