|
|
|
@ -61,7 +61,7 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
@@ -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(
@@ -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(
@@ -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(
@@ -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) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|