mirror of
https://github.com/nextcloud/talk-android
synced 2025-08-03 18:15:40 +01:00
hide thread messages in normal chat
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
a26d1c05bc
commit
172d2291cc
@ -168,7 +168,7 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
|
||||
binding.messageQuote.quotedChatMessageView.visibility =
|
||||
if (!message.isDeleted &&
|
||||
message.parentMessageId != null &&
|
||||
message.parentMessageId != chatActivity.threadId
|
||||
message.parentMessageId != chatActivity.conversationThreadId
|
||||
) {
|
||||
processParentMessage(message)
|
||||
View.VISIBLE
|
||||
|
@ -183,7 +183,7 @@ class OutcomingTextMessageViewHolder(itemView: View) :
|
||||
binding.messageQuote.quotedChatMessageView.visibility =
|
||||
if (!message.isDeleted &&
|
||||
message.parentMessageId != null &&
|
||||
message.parentMessageId != chatActivity.threadId
|
||||
message.parentMessageId != chatActivity.conversationThreadId
|
||||
) {
|
||||
processParentMessage(message)
|
||||
View.VISIBLE
|
||||
|
@ -353,8 +353,8 @@ class ChatActivity :
|
||||
|
||||
var sessionIdAfterRoomJoined: String? = null
|
||||
lateinit var roomToken: String
|
||||
var threadId: Long? = null
|
||||
var threadInfo: ThreadInfo? = null
|
||||
var conversationThreadId: Long? = null
|
||||
var conversationThreadInfo: ThreadInfo? = null
|
||||
var conversationUser: User? = null
|
||||
lateinit var spreedCapabilities: SpreedCapability
|
||||
var chatApiVersion: Int = 1
|
||||
@ -506,10 +506,10 @@ class ChatActivity :
|
||||
credentials!!,
|
||||
urlForChatting,
|
||||
roomToken,
|
||||
threadId
|
||||
conversationThreadId
|
||||
)
|
||||
|
||||
threadId?.let {
|
||||
conversationThreadId?.let {
|
||||
val threadUrl = ApiUtils.getUrlForThread(
|
||||
version = 1,
|
||||
baseUrl = conversationUser!!.baseUrl,
|
||||
@ -571,7 +571,7 @@ class ChatActivity :
|
||||
|
||||
roomToken = extras?.getString(KEY_ROOM_TOKEN).orEmpty()
|
||||
|
||||
threadId = if (extras?.containsKey(KEY_THREAD_ID) == true) {
|
||||
conversationThreadId = if (extras?.containsKey(KEY_THREAD_ID) == true) {
|
||||
extras.getLong(KEY_THREAD_ID)
|
||||
} else {
|
||||
null
|
||||
@ -966,6 +966,7 @@ class ChatActivity :
|
||||
var chatMessageList = triple.third
|
||||
|
||||
chatMessageList = handleSystemMessages(chatMessageList)
|
||||
chatMessageList = handleThreadMessages(chatMessageList)
|
||||
if (chatMessageList.isEmpty()) {
|
||||
return@onEach
|
||||
}
|
||||
@ -1296,7 +1297,7 @@ class ChatActivity :
|
||||
}
|
||||
|
||||
is ChatViewModel.ThreadRetrieveUiState.Success -> {
|
||||
threadInfo = uiState.thread
|
||||
conversationThreadInfo = uiState.thread
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2668,7 +2669,7 @@ class ChatActivity :
|
||||
|
||||
title.text =
|
||||
if (isChatThread()) {
|
||||
threadInfo?.first?.message
|
||||
conversationThreadInfo?.first?.message
|
||||
} else if (currentConversation?.displayName != null) {
|
||||
try {
|
||||
EmojiCompat.get().process(currentConversation?.displayName as CharSequence).toString()
|
||||
@ -2683,7 +2684,7 @@ class ChatActivity :
|
||||
if (isChatThread()) {
|
||||
val repliesAmountTitle = String.format(
|
||||
resources.getString(R.string.thread_replies_amount),
|
||||
threadInfo?.thread?.numReplies
|
||||
conversationThreadInfo?.thread?.numReplies
|
||||
)
|
||||
statusMessageViewContents(repliesAmountTitle)
|
||||
} else if (currentConversation?.type == ConversationEnums.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
|
||||
@ -3455,7 +3456,7 @@ class ChatActivity :
|
||||
}
|
||||
|
||||
private fun handleSystemMessages(chatMessageList: List<ChatMessage>): List<ChatMessage> {
|
||||
val chatMessageMap = chatMessageList.map { it.id to it }.toMap().toMutableMap()
|
||||
val chatMessageMap = chatMessageList.associateBy { it.id }.toMutableMap()
|
||||
|
||||
val chatMessageIterator = chatMessageMap.iterator()
|
||||
while (chatMessageIterator.hasNext()) {
|
||||
@ -3474,7 +3475,7 @@ class ChatActivity :
|
||||
}
|
||||
|
||||
private fun handleExpandableSystemMessages(chatMessageList: List<ChatMessage>): List<ChatMessage> {
|
||||
val chatMessageMap = chatMessageList.map { it.id to it }.toMap().toMutableMap()
|
||||
val chatMessageMap = chatMessageList.associateBy { it.id }.toMutableMap()
|
||||
val chatMessageIterator = chatMessageMap.iterator()
|
||||
while (chatMessageIterator.hasNext()) {
|
||||
val currentMessage = chatMessageIterator.next()
|
||||
@ -3497,6 +3498,23 @@ class ChatActivity :
|
||||
return chatMessageMap.values.toList()
|
||||
}
|
||||
|
||||
private fun handleThreadMessages(chatMessageList: List<ChatMessage>): List<ChatMessage> {
|
||||
val chatMessageMap = chatMessageList.associateBy { it.id }.toMutableMap()
|
||||
|
||||
if (conversationThreadId == null) {
|
||||
val chatMessageIterator = chatMessageMap.iterator()
|
||||
while (chatMessageIterator.hasNext()) {
|
||||
val currentMessage = chatMessageIterator.next()
|
||||
|
||||
if (currentMessage.value.isThread) {
|
||||
chatMessageIterator.remove()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return chatMessageMap.values.toList()
|
||||
}
|
||||
|
||||
private fun isInfoMessageAboutDeletion(currentMessage: MutableMap.MutableEntry<String, ChatMessage>): Boolean =
|
||||
currentMessage.value.parentMessageId != null &&
|
||||
currentMessage.value.systemMessageType == ChatMessage
|
||||
@ -4206,7 +4224,7 @@ class ChatActivity :
|
||||
}
|
||||
}
|
||||
|
||||
private fun isChatThread(): Boolean = threadId != null && threadId!! > 0
|
||||
private fun isChatThread(): Boolean = conversationThreadId != null && conversationThreadId!! > 0
|
||||
|
||||
fun openThread(messageId: Long) {
|
||||
val bundle = Bundle()
|
||||
|
@ -862,7 +862,7 @@ class MessageInputFragment : Fragment() {
|
||||
.findViewById<RelativeLayout>(R.id.quotedChatMessageView)?.tag as Int? ?: 0
|
||||
|
||||
if (replyMessageId == 0) {
|
||||
replyMessageId = chatActivity.threadInfo?.thread?.id ?: 0
|
||||
replyMessageId = chatActivity.conversationThreadInfo?.thread?.id ?: 0
|
||||
}
|
||||
|
||||
sendMessage(
|
||||
|
@ -152,7 +152,7 @@ class MessageActionsDialog(
|
||||
isOnline
|
||||
)
|
||||
initMenuStartThread(!message.isThread)
|
||||
initMenuOpenThread(message.isThread && chatActivity.threadId == null)
|
||||
initMenuOpenThread(message.isThread && chatActivity.conversationThreadId == null)
|
||||
initMenuEditMessage(isMessageEditable)
|
||||
initMenuDeleteMessage(showMessageDeletionButton && isOnline)
|
||||
initMenuForwardMessage(
|
||||
|
Loading…
Reference in New Issue
Block a user