Skip to content

Commit e8f772a

Browse files
committed
feat: display last message preview in conversation list
1 parent 991cead commit e8f772a

File tree

2 files changed

+68
-60
lines changed

2 files changed

+68
-60
lines changed

app/src/main/kotlin/com/wire/android/mapper/MessagePreviewContentMapper.kt

Lines changed: 42 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -105,56 +105,55 @@ private fun String?.userUiText(isSelfMessage: Boolean): UIText = when {
105105
else -> UIText.StringResource(R.string.username_unavailable_label)
106106
}
107107

108+
private fun assetMessageResId(
109+
assetType: AssetType,
110+
isSelfMessage: Boolean,
111+
count: Int
112+
): UIText {
113+
return if (count > 1) {
114+
val resId = when (assetType) {
115+
AssetType.AUDIO -> if (isSelfMessage) R.string.last_message_self_user_shared_multiple_audio
116+
else R.string.last_message_other_user_shared_multiple_audio
117+
118+
AssetType.IMAGE -> if (isSelfMessage) R.string.last_message_self_user_shared_multiple_image
119+
else R.string.last_message_other_user_shared_multiple_image
120+
121+
AssetType.VIDEO -> if (isSelfMessage) R.string.last_message_self_user_shared_multiple_video
122+
else R.string.last_message_other_user_shared_multiple_video
123+
124+
AssetType.GENERIC_ASSET -> if (isSelfMessage) R.string.last_message_self_user_shared_multiple_asset
125+
else R.string.last_message_other_user_shared_multiple_asset
126+
}
127+
UIText.StringResource(resId, count)
128+
} else {
129+
val resId = when (assetType) {
130+
AssetType.AUDIO -> if (isSelfMessage) R.string.last_message_self_user_shared_audio
131+
else R.string.last_message_other_user_shared_audio
132+
133+
AssetType.IMAGE -> if (isSelfMessage) R.string.last_message_self_user_shared_image
134+
else R.string.last_message_other_user_shared_image
135+
136+
AssetType.VIDEO -> if (isSelfMessage) R.string.last_message_self_user_shared_video
137+
else R.string.last_message_other_user_shared_video
138+
139+
AssetType.GENERIC_ASSET -> if (isSelfMessage) R.string.last_message_self_user_shared_asset
140+
else R.string.last_message_other_user_shared_asset
141+
}
142+
UIText.StringResource(resId)
143+
}
144+
}
145+
108146
@Suppress("LongMethod", "ComplexMethod", "NestedBlockDepth")
109147
fun MessagePreview.uiLastMessageContent(): UILastMessageContent {
110148
return when (content) {
111149
is WithUser -> {
112150
val userContent = (content as WithUser)
113151
val userUIText = userContent.username.userUiText(isSelfMessage)
114152
when ((userContent)) {
115-
is WithUser.Asset -> when ((content as WithUser.Asset).type) {
116-
AssetType.AUDIO ->
117-
UILastMessageContent.SenderWithMessage(
118-
userUIText,
119-
UIText.StringResource(R.string.last_message_self_user_shared_audio)
120-
)
121-
122-
AssetType.IMAGE ->
123-
UILastMessageContent.SenderWithMessage(
124-
userUIText,
125-
UIText.StringResource(
126-
if (isSelfMessage) {
127-
R.string.last_message_self_user_shared_image
128-
} else {
129-
R.string.last_message_other_user_shared_image
130-
}
131-
)
132-
)
133-
134-
AssetType.VIDEO ->
135-
UILastMessageContent.SenderWithMessage(
136-
userUIText,
137-
UIText.StringResource(
138-
if (isSelfMessage) {
139-
R.string.last_message_self_user_shared_video
140-
} else {
141-
R.string.last_message_other_user_shared_video
142-
}
143-
)
144-
)
145-
146-
AssetType.GENERIC_ASSET ->
147-
UILastMessageContent.SenderWithMessage(
148-
userUIText,
149-
UIText.StringResource(
150-
if (isSelfMessage) {
151-
R.string.last_message_self_user_shared_asset
152-
} else {
153-
R.string.last_message_other_user_shared_asset
154-
}
155-
)
156-
)
157-
}
153+
is WithUser.Asset -> UILastMessageContent.SenderWithMessage(
154+
sender = userUIText,
155+
message = assetMessageResId((content as WithUser.Asset).type, isSelfMessage, (content as WithUser.Asset).count)
156+
)
158157

159158
is WithUser.ConversationNameChange -> UILastMessageContent.SenderWithMessage(
160159
userUIText,

app/src/main/res/values/strings.xml

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -914,28 +914,37 @@
914914
<item quantity="one">1 person was removed from the conversation</item>
915915
<item quantity="other">%1$d people were removed from the conversation</item>
916916
</plurals>
917-
<string name="last_message_self_user_shared_asset">shared a file.</string>
918-
<string name="last_message_other_user_shared_asset">shared a file.</string>
919-
<string name="last_message_self_user_shared_image">shared an image.</string>
920-
<string name="last_message_other_user_shared_image">shared an image.</string>
921-
<string name="last_message_self_user_shared_video">shared a video.</string>
922-
<string name="last_message_other_user_shared_video">shared a video.</string>
923-
<string name="last_message_self_user_shared_audio">shared an audio message.</string>
924-
<string name="last_message_other_user_shared_audio">shared an audio message.</string>
925-
<string name="last_message_self_user_shared_location">shared a location.</string>
926-
<string name="last_message_other_user_shared_location">shared a location.</string>
927-
<string name="last_message_self_user_knock">pinged.</string>
928-
<string name="last_message_other_user_knock">pinged.</string>
929-
<string name="last_message_call">called.</string>
917+
<!-- We are duplicating these strings for translators to provide more accurate translations-->
918+
<string name="last_message_self_user_shared_asset">shared a file</string>
919+
<string name="last_message_other_user_shared_asset">shared a file</string>
920+
<string name="last_message_self_user_shared_multiple_asset">shared %1$s files</string>
921+
<string name="last_message_other_user_shared_multiple_asset">shared %1$s files</string>
922+
<string name="last_message_self_user_shared_image">shared an image</string>
923+
<string name="last_message_other_user_shared_image">shared an image</string>
924+
<string name="last_message_self_user_shared_multiple_image">shared %1$s images</string>
925+
<string name="last_message_other_user_shared_multiple_image">shared %1$s images</string>
926+
<string name="last_message_self_user_shared_video">shared a video</string>
927+
<string name="last_message_other_user_shared_video">shared a video</string>
928+
<string name="last_message_self_user_shared_multiple_video">shared %1$s videos</string>
929+
<string name="last_message_other_user_shared_multiple_video">shared %1$s videos</string>
930+
<string name="last_message_self_user_shared_audio">shared an audio message</string>
931+
<string name="last_message_other_user_shared_audio">shared an audio message</string>
932+
<string name="last_message_self_user_shared_multiple_audio">shared %1$s audio messages</string>
933+
<string name="last_message_other_user_shared_multiple_audio">shared %1$s audio messages</string>
934+
<string name="last_message_self_user_shared_location">shared a location</string>
935+
<string name="last_message_other_user_shared_location">shared a location</string>
936+
<string name="last_message_self_user_knock">pinged</string>
937+
<string name="last_message_other_user_knock">pinged</string>
938+
<string name="last_message_call">called</string>
930939
<string name="last_message_mentioned">mentioned you</string>
931940
<string name="last_message_replied">replied to you</string>
932941
<string name="last_message_other_changed_conversation_name">changed conversation name</string>
933942
<string name="last_message_self_changed_conversation_name">changed conversation name</string>
934943
<string name="last_message_calling">%1$s calling...</string>
935-
<string name="last_message_self_user_joined_conversation">joined the conversation.</string>
936-
<string name="last_message_self_user_left_conversation">left the conversation.</string>
937-
<string name="last_message_other_user_joined_conversation">joined the conversation.</string>
938-
<string name="last_message_other_user_left_conversation">left the conversation.</string>
944+
<string name="last_message_self_user_joined_conversation">joined the conversation</string>
945+
<string name="last_message_self_user_left_conversation">left the conversation</string>
946+
<string name="last_message_other_user_joined_conversation">joined the conversation</string>
947+
<string name="last_message_other_user_left_conversation">left the conversation</string>
939948
<string name="last_message_verified_conversation_proteus">All device fingerprints are verified (Proteus)</string>
940949
<string name="last_message_verified_conversation_mls">All devices are verified (End-to-end Identity)</string>
941950
<string name="last_message_conversations_verification_degraded_mls">Conversation is no longer verified</string>

0 commit comments

Comments
 (0)