implement reply logic for text messages

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2025-07-14 11:32:42 +02:00
parent cd068d42db
commit 18b5744974
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
4 changed files with 13 additions and 11 deletions

View File

@ -167,9 +167,10 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
// parent message handling // parent message handling
val chatActivity = commonMessageInterface as ChatActivity val chatActivity = commonMessageInterface as ChatActivity
binding.messageQuote.quotedChatMessageView.visibility = binding.messageQuote.quotedChatMessageView.visibility =
if (chatActivity.threadId == message.threadId) { if (!message.isDeleted &&
View.GONE message.parentMessageId != null &&
} else if (!message.isDeleted && message.parentMessageId != null) { message.parentMessageId != chatActivity.threadId
) {
processParentMessage(message) processParentMessage(message)
View.VISIBLE View.VISIBLE
} else { } else {

View File

@ -182,9 +182,10 @@ class OutcomingTextMessageViewHolder(itemView: View) :
// parent message handling // parent message handling
val chatActivity = commonMessageInterface as ChatActivity val chatActivity = commonMessageInterface as ChatActivity
binding.messageQuote.quotedChatMessageView.visibility = binding.messageQuote.quotedChatMessageView.visibility =
if (chatActivity.threadId == message.threadId) { if (!message.isDeleted &&
View.GONE message.parentMessageId != null &&
} else if (!message.isDeleted && message.parentMessageId != null) { message.parentMessageId != chatActivity.threadId
) {
processParentMessage(message) processParentMessage(message)
View.VISIBLE View.VISIBLE
} else { } else {

View File

@ -354,7 +354,7 @@ class ChatActivity :
var sessionIdAfterRoomJoined: String? = null var sessionIdAfterRoomJoined: String? = null
lateinit var roomToken: String lateinit var roomToken: String
var threadId: Long? = null var threadId: Long? = null
var thread: ThreadInfo? = null var threadInfo: ThreadInfo? = null
var conversationUser: User? = null var conversationUser: User? = null
lateinit var spreedCapabilities: SpreedCapability lateinit var spreedCapabilities: SpreedCapability
var chatApiVersion: Int = 1 var chatApiVersion: Int = 1
@ -1296,7 +1296,7 @@ class ChatActivity :
} }
is ChatViewModel.ThreadRetrieveUiState.Success -> { is ChatViewModel.ThreadRetrieveUiState.Success -> {
thread = uiState.thread threadInfo = uiState.thread
} }
} }
} }
@ -2668,7 +2668,7 @@ class ChatActivity :
title.text = title.text =
if (isChatThread()) { if (isChatThread()) {
thread?.first?.message threadInfo?.first?.message
} else if (currentConversation?.displayName != null) { } else if (currentConversation?.displayName != null) {
try { try {
EmojiCompat.get().process(currentConversation?.displayName as CharSequence).toString() EmojiCompat.get().process(currentConversation?.displayName as CharSequence).toString()
@ -2683,7 +2683,7 @@ class ChatActivity :
if (isChatThread()) { if (isChatThread()) {
val repliesAmountTitle = String.format( val repliesAmountTitle = String.format(
resources.getString(R.string.thread_replies_amount), resources.getString(R.string.thread_replies_amount),
thread?.thread?.numReplies threadInfo?.thread?.numReplies
) )
statusMessageViewContents(repliesAmountTitle) statusMessageViewContents(repliesAmountTitle)
} else if (currentConversation?.type == ConversationEnums.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) { } else if (currentConversation?.type == ConversationEnums.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {

View File

@ -862,7 +862,7 @@ class MessageInputFragment : Fragment() {
.findViewById<RelativeLayout>(R.id.quotedChatMessageView)?.tag as Int? ?: 0 .findViewById<RelativeLayout>(R.id.quotedChatMessageView)?.tag as Int? ?: 0
if (replyMessageId == 0) { if (replyMessageId == 0) {
replyMessageId = chatActivity.thread?.last?.id?.toInt() ?: 0 replyMessageId = chatActivity.threadInfo?.thread?.id ?: 0
} }
sendMessage( sendMessage(