diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt
index 6f3158f6a..5760e85d0 100644
--- a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt
+++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt
@@ -24,6 +24,7 @@ import androidx.core.content.res.ResourcesCompat
import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.items.ConversationItem.ConversationItemViewHolder
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
+import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.chat.data.model.ChatMessage.MessageType
import com.nextcloud.talk.data.database.mappers.asModel
import com.nextcloud.talk.data.user.model.User
@@ -232,18 +233,6 @@ class ConversationItem(
ConversationEnums.ConversationType.ROOM_SYSTEM === model.type
) {
holder.binding.dialogLastMessage.text = chatMessage.text
- } else if (MessageType.SINGLE_NC_ATTACHMENT_MESSAGE == chatMessage.getCalculateMessageType()) {
- var attachmentName = chatMessage.message
- if (attachmentName == "{file}") {
- attachmentName = chatMessage.messageParameters?.get("file")?.get("name")
- }
- val name = if (chatMessage.messageParameters?.get("actor")?.get("name") == user.userId) {
- sharedApplication!!.resources.getString(R.string.nc_current_user)
- } else {
- "${chatMessage.messageParameters?.get("actor")?.get("name")}:"
- }
- val lastMessage = setLastNameFortAttachmentDialog(name, R.drawable.baseline_image_24, attachmentName!!)
- holder.binding.dialogLastMessage.text = lastMessage
} else {
chatMessage?.activeUser = user
@@ -263,7 +252,7 @@ class ConversationItem(
}
}
- private fun calculateRegularLastMessageText(appContext: Context): String {
+ private fun calculateRegularLastMessageText(appContext: Context): CharSequence {
return if (chatMessage?.actorId == user.userId) {
String.format(
appContext.getString(R.string.nc_formatted_message_you),
@@ -345,7 +334,7 @@ class ConversationItem(
this.header = header
}
- private val lastMessageDisplayText: String
+ private val lastMessageDisplayText: CharSequence
get() {
if (chatMessage?.getCalculateMessageType() == MessageType.REGULAR_TEXT_MESSAGE ||
chatMessage?.getCalculateMessageType() == MessageType.SYSTEM_MESSAGE ||
@@ -366,23 +355,20 @@ class ConversationItem(
)
}
} else if (MessageType.SINGLE_NC_GEOLOCATION_MESSAGE == chatMessage?.getCalculateMessageType()) {
- return if (chatMessage?.actorId == chatMessage?.activeUser!!.userId) {
- sharedApplication!!.getString(R.string.nc_sent_location_you)
- } else {
- String.format(
- sharedApplication!!.resources.getString(R.string.nc_sent_location),
- chatMessage?.getNullsafeActorDisplayName()
- )
- }
+ var locationName = chatMessage.messageParameters?.get("object")?.get("name") ?: ""
+ val author = authorName(chatMessage)
+ val lastMessage =
+ setLastNameForAttachmentMessage(author, R.drawable.baseline_location_pin_24, locationName)
+ return lastMessage
} else if (MessageType.VOICE_MESSAGE == chatMessage?.getCalculateMessageType()) {
- return if (chatMessage?.actorId == chatMessage?.activeUser!!.userId) {
- sharedApplication!!.getString(R.string.nc_sent_voice_you)
- } else {
- String.format(
- sharedApplication!!.resources.getString(R.string.nc_sent_voice),
- chatMessage?.getNullsafeActorDisplayName()
- )
- }
+ var voiceMessageName = chatMessage.messageParameters?.get("file")?.get("name") ?: ""
+ val author = authorName(chatMessage)
+ val lastMessage = setLastNameForAttachmentMessage(
+ author,
+ R.drawable.baseline_mic_24,
+ voiceMessageName
+ )
+ return lastMessage
} else if (MessageType.SINGLE_LINK_AUDIO_MESSAGE == chatMessage?.getCalculateMessageType()) {
return if (chatMessage?.actorId == chatMessage?.activeUser!!.userId) {
sharedApplication!!.getString(R.string.nc_sent_an_audio_you)
@@ -411,43 +397,72 @@ class ConversationItem(
)
}
} else if (MessageType.POLL_MESSAGE == chatMessage?.getCalculateMessageType()) {
- return if (chatMessage?.actorId == chatMessage?.activeUser!!.userId) {
- sharedApplication!!.getString(R.string.nc_sent_poll_you)
- } else {
- String.format(
- sharedApplication!!.resources.getString(R.string.nc_sent_poll),
- chatMessage?.getNullsafeActorDisplayName()
- )
+ var pollMessageTitle = chatMessage.messageParameters?.get("object")?.get("name") ?: ""
+ val author = authorName(chatMessage)
+ val lastMessage = setLastNameForAttachmentMessage(
+ author,
+ R.drawable.baseline_bar_chart_24,
+ pollMessageTitle
+ )
+ return lastMessage
+ } else if (MessageType.SINGLE_NC_ATTACHMENT_MESSAGE == chatMessage?.getCalculateMessageType()) {
+ var attachmentName = chatMessage.message
+ if (attachmentName == "{file}") {
+ attachmentName = chatMessage.messageParameters?.get("file")?.get("name")
}
+ val author = authorName(chatMessage)
+
+ val drawable = chatMessage.messageParameters?.get("file")?.get("mimetype")?.let {
+ when {
+ it.contains("image") -> R.drawable.baseline_image_24
+ it.contains("video") -> R.drawable.baseline_video_24
+ it.contains("application") -> R.drawable.baseline_insert_drive_file_24
+ it.contains("audio") -> R.drawable.baseline_audiotrack_24
+ it.contains("text/vcard") -> R.drawable.baseline_contacts_24
+ else -> null
+ }
+ }
+ val lastMessage = setLastNameForAttachmentMessage(author, drawable, attachmentName!!)
+ return lastMessage
} else if (MessageType.DECK_CARD == chatMessage?.getCalculateMessageType()) {
- return if (chatMessage?.actorId == chatMessage?.activeUser!!.userId) {
- sharedApplication!!.getString(R.string.nc_sent_deck_card_you)
- } else {
- String.format(
- sharedApplication!!.resources.getString(R.string.nc_sent_deck_card),
- chatMessage?.getNullsafeActorDisplayName()
- )
- }
+ var deckTitle = chatMessage.messageParameters?.get("object")?.get("name") ?: ""
+ val author = authorName(chatMessage)
+ val lastMessage = setLastNameForAttachmentMessage(author, R.drawable.baseline_article_24, deckTitle)
+ return lastMessage
}
}
return ""
}
- fun setLastNameFortAttachmentDialog(actor: String, icon: Int, attachmentName: String): SpannableStringBuilder {
+ fun authorName(chatMessage: ChatMessage): String {
+ val name = if (chatMessage.actorId == chatMessage.activeUser!!.userId) {
+ sharedApplication!!.resources.getString(R.string.nc_current_user)
+ } else {
+ chatMessage.getNullsafeActorDisplayName()?.let { "$it:" } ?: ""
+ }
+ return name
+ }
+
+ fun setLastNameForAttachmentMessage(actor: String, icon: Int?, attachmentName: String): SpannableStringBuilder {
val builder = SpannableStringBuilder()
builder.append(actor)
- val drawable = ContextCompat.getDrawable(context, icon)
+ val drawable = icon?.let { it -> ContextCompat.getDrawable(context, it) }
+ if (drawable != null) {
+ viewThemeUtils.platform.colorDrawable(
+ drawable,
+ context.resources.getColor(R.color.low_emphasis_text, null)
+ )
+ val desiredWidth = (drawable.intrinsicWidth * IMAGE_SCALE_FACTOR).toInt()
+ val desiredHeight = (drawable.intrinsicHeight * IMAGE_SCALE_FACTOR).toInt()
+ drawable.setBounds(0, 0, desiredWidth, desiredHeight)
- drawable?.let {
- val scaleFactor = 0.7f
- val desiredWidth = (it.intrinsicWidth * scaleFactor).toInt()
- val desiredHeight = (it.intrinsicHeight * scaleFactor).toInt()
- it.setBounds(0, 0, desiredWidth, desiredHeight)
- val imageSpan = ImageSpan(it, ImageSpan.ALIGN_BOTTOM)
+ val imageSpan = ImageSpan(drawable, ImageSpan.ALIGN_BOTTOM)
val startImage = builder.length
builder.append(" ")
builder.setSpan(imageSpan, startImage, startImage + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+ } else {
+ builder.append(" ")
}
builder.append(attachmentName)
return builder
@@ -467,5 +482,6 @@ class ConversationItem(
private const val STATUS_SIZE_IN_DP = 9f
private const val UNREAD_BUBBLE_STROKE_WIDTH = 6.0f
private const val UNREAD_MESSAGES_TRESHOLD = 1000
+ private const val IMAGE_SCALE_FACTOR = 0.7f
}
}
diff --git a/app/src/main/res/drawable/baseline_article_24.xml b/app/src/main/res/drawable/baseline_article_24.xml
new file mode 100644
index 000000000..2f6ed464a
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_article_24.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/baseline_audiotrack_24.xml b/app/src/main/res/drawable/baseline_audiotrack_24.xml
new file mode 100644
index 000000000..f825aaaa2
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_audiotrack_24.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/baseline_bar_chart_24.xml b/app/src/main/res/drawable/baseline_bar_chart_24.xml
new file mode 100644
index 000000000..033bf2aa3
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_bar_chart_24.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/baseline_contacts_24.xml b/app/src/main/res/drawable/baseline_contacts_24.xml
new file mode 100644
index 000000000..4d07d6007
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_contacts_24.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/baseline_image_24.xml b/app/src/main/res/drawable/baseline_image_24.xml
index f7eda4ffc..07209096f 100644
--- a/app/src/main/res/drawable/baseline_image_24.xml
+++ b/app/src/main/res/drawable/baseline_image_24.xml
@@ -1,19 +1,19 @@
-
diff --git a/app/src/main/res/drawable/baseline_insert_drive_file_24.xml b/app/src/main/res/drawable/baseline_insert_drive_file_24.xml
new file mode 100644
index 000000000..4ce0dfc55
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_insert_drive_file_24.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/baseline_location_pin_24.xml b/app/src/main/res/drawable/baseline_location_pin_24.xml
new file mode 100644
index 000000000..35a523a0f
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_location_pin_24.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/baseline_mic_24.xml b/app/src/main/res/drawable/baseline_mic_24.xml
new file mode 100644
index 000000000..3a53969f3
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_mic_24.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/baseline_video_24.xml b/app/src/main/res/drawable/baseline_video_24.xml
new file mode 100644
index 000000000..16a43fbd2
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_video_24.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9ed925f62..1bf22b8a3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -406,23 +406,14 @@ How to translate with transifex:
Conversation info
Unread messages
%1$s sent a GIF.
- %1$s sent an attachment.
%1$s sent an audio.
%1$s sent a video.
%1$s sent an image.
- %1$s sent a poll.
- %1$s sent a location.
- %1$s sent a voice message.
%1$s sent a deck card
You sent a GIF.
- You sent an attachment.
You sent an audio.
You sent a video.
You sent an image.
- You sent a poll.
- You sent a location.
- You sent a voice message.
- You sent a deck card
%1$s: %2$s
Cancel reply