diff --git a/.idea/inspectionProfiles/ktlint.xml b/.idea/inspectionProfiles/ktlint.xml
index e8f89f3ed2..51c63581ed 100644
--- a/.idea/inspectionProfiles/ktlint.xml
+++ b/.idea/inspectionProfiles/ktlint.xml
@@ -3,15 +3,19 @@
+
+
+
+
diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/TemporaryMessageViewHolder.kt b/app/src/main/java/com/nextcloud/talk/adapters/messages/TemporaryMessageViewHolder.kt
new file mode 100644
index 0000000000..e55fd24bb1
--- /dev/null
+++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/TemporaryMessageViewHolder.kt
@@ -0,0 +1,59 @@
+/*
+ * Nextcloud Talk - Android Client
+ *
+ * SPDX-FileCopyrightText: 2024 Your Name
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+package com.nextcloud.talk.adapters.messages
+
+import android.view.View
+import androidx.core.content.res.ResourcesCompat
+import androidx.core.view.ViewCompat
+import autodagger.AutoInjector
+import com.nextcloud.talk.R
+import com.nextcloud.talk.application.NextcloudTalkApplication
+import com.nextcloud.talk.chat.data.model.ChatMessage
+import com.nextcloud.talk.databinding.ItemTemporaryMessageBinding
+import com.nextcloud.talk.ui.theme.ViewThemeUtils
+import com.nextcloud.talk.utils.DisplayUtils
+import com.stfalcon.chatkit.messages.MessagesListAdapter
+import javax.inject.Inject
+
+@AutoInjector(NextcloudTalkApplication::class)
+class TemporaryMessageViewHolder(outgoingView: View, payload: Any) :
+ MessagesListAdapter.OutcomingMessageViewHolder(outgoingView) {
+
+ private val binding: ItemTemporaryMessageBinding = ItemTemporaryMessageBinding.bind(outgoingView)
+
+ @Inject
+ lateinit var viewThemeUtils: ViewThemeUtils
+
+ override fun onBind(message: ChatMessage?) {
+ super.onBind(message)
+ NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
+
+ val bgBubbleColor = bubble.resources.getColor(R.color.bg_message_list_incoming_bubble, null)
+ val layout = R.drawable.shape_outcoming_message
+ val bubbleDrawable = DisplayUtils.getMessageSelector(
+ bgBubbleColor,
+ ResourcesCompat.getColor(bubble.resources, R.color.transparent, null),
+ bgBubbleColor,
+ layout
+ )
+ ViewCompat.setBackground(bubble, bubbleDrawable)
+
+ }
+
+ override fun viewDetached() {
+ // unused atm
+ }
+
+ override fun viewAttached() {
+ // unused atm
+ }
+
+ override fun viewRecycled() {
+ // unused atm
+ }
+}
diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
index ae0cc210e5..11db86c210 100644
--- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
+++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt
@@ -101,6 +101,7 @@ import com.nextcloud.talk.adapters.messages.PreviewMessageViewHolder
import com.nextcloud.talk.adapters.messages.SystemMessageInterface
import com.nextcloud.talk.adapters.messages.SystemMessageViewHolder
import com.nextcloud.talk.adapters.messages.TalkMessagesListAdapter
+import com.nextcloud.talk.adapters.messages.TemporaryMessageViewHolder
import com.nextcloud.talk.adapters.messages.UnreadNoticeMessageViewHolder
import com.nextcloud.talk.adapters.messages.VoiceMessageInterface
import com.nextcloud.talk.api.NcApi
@@ -1162,6 +1163,17 @@ class ChatActivity :
this
)
+ messageHolders.registerContentType(
+ CONTENT_TYPE_TEMP,
+ TemporaryMessageViewHolder::class.java,
+ payload,
+ R.layout.item_temporary_message,
+ TemporaryMessageViewHolder::class.java,
+ payload,
+ R.layout.item_temporary_message,
+ this
+ )
+
messageHolders.registerContentType(
CONTENT_TYPE_SYSTEM_MESSAGE,
SystemMessageViewHolder::class.java,
@@ -3439,6 +3451,7 @@ class ChatActivity :
CONTENT_TYPE_SYSTEM_MESSAGE -> !TextUtils.isEmpty(message.systemMessage)
CONTENT_TYPE_UNREAD_NOTICE_MESSAGE -> message.id == "-1"
CONTENT_TYPE_CALL_STARTED -> message.id == "-2"
+ CONTENT_TYPE_TEMP -> message.id == "-3"
else -> false
}
@@ -3620,6 +3633,7 @@ class ChatActivity :
private const val CONTENT_TYPE_VOICE_MESSAGE: Byte = 5
private const val CONTENT_TYPE_POLL: Byte = 6
private const val CONTENT_TYPE_LINK_PREVIEW: Byte = 7
+ private const val CONTENT_TYPE_TEMP: Byte = 8
private const val NEW_MESSAGES_POPUP_BUBBLE_DELAY: Long = 200
private const val GET_ROOM_INFO_DELAY_NORMAL: Long = 30000
private const val GET_ROOM_INFO_DELAY_LOBBY: Long = 5000
diff --git a/app/src/main/res/layout/item_temporary_message.xml b/app/src/main/res/layout/item_temporary_message.xml
new file mode 100644
index 0000000000..96bf919d78
--- /dev/null
+++ b/app/src/main/res/layout/item_temporary_message.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+