From ae0a9d6aae7a194bdcbcbb22bf35a8afce6b13cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Kr=C3=BCger?= Date: Wed, 7 Sep 2022 12:06:14 +0200 Subject: [PATCH] Reduce complexity for 'ChatController#processMessagesFromTheFuture' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tim Krüger --- .../talk/controllers/ChatController.kt | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt index 5bb943d5c..5f2046c99 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt @@ -2373,7 +2373,6 @@ class ChatController(args: Bundle) : } private fun processMessagesFromTheFuture(chatMessageList: List) { - var chatMessage: ChatMessage val shouldAddNewMessagesNotice = (adapter?.itemCount ?: 0) > 0 && chatMessageList.isNotEmpty() @@ -2386,14 +2385,25 @@ class ChatController(args: Bundle) : adapter?.addToStart(unreadChatMessage, false) } - val isThereANewNotice = - shouldAddNewMessagesNotice || adapter?.getMessagePositionByIdInReverse("-1") != -1 - determinePreviousMessageIds(chatMessageList) - for (i in chatMessageList.indices) { - chatMessage = chatMessageList[i] + addMessagesToAdapter(shouldAddNewMessagesNotice, chatMessageList) + if (shouldAddNewMessagesNotice && adapter != null) { + layoutManager?.scrollToPositionWithOffset( + adapter!!.getMessagePositionByIdInReverse("-1"), + binding.messagesListView.height / 2 + ) + } + } + + private fun addMessagesToAdapter( + shouldAddNewMessagesNotice: Boolean, + chatMessageList: List + ) { + val isThereANewNotice = + shouldAddNewMessagesNotice || adapter?.getMessagePositionByIdInReverse("-1") != -1 + for (chatMessage in chatMessageList) { chatMessage.activeUser = conversationUser val shouldScroll = @@ -2403,36 +2413,33 @@ class ChatController(args: Bundle) : adapter != null && adapter?.itemCount == 0 - if (!shouldAddNewMessagesNotice && !shouldScroll) { - if (!binding.popupBubbleView.isShown) { - newMessagesCount = 1 - binding.popupBubbleView.show() - } else if (binding.popupBubbleView.isShown) { - newMessagesCount++ - } - } else { - newMessagesCount = 0 - } + modifyMessageCount(shouldAddNewMessagesNotice, shouldScroll) - if (adapter != null) { + adapter?.let { chatMessage.isGrouped = ( - adapter!!.isPreviousSameAuthor( + it.isPreviousSameAuthor( chatMessage.actorId, -1 - ) && adapter!!.getSameAuthorLastMessagesCount(chatMessage.actorId) % + ) && it.getSameAuthorLastMessagesCount(chatMessage.actorId) % GROUPED_MESSAGES_SAME_AUTHOR_THRESHOLD > 0 ) chatMessage.isOneToOneConversation = (currentConversation?.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) - adapter?.addToStart(chatMessage, shouldScroll) + it.addToStart(chatMessage, shouldScroll) } } + } - if (shouldAddNewMessagesNotice && adapter != null) { - layoutManager?.scrollToPositionWithOffset( - adapter!!.getMessagePositionByIdInReverse("-1"), - binding.messagesListView.height / 2 - ) + private fun modifyMessageCount(shouldAddNewMessagesNotice: Boolean, shouldScroll: Boolean) { + if (!shouldAddNewMessagesNotice && !shouldScroll) { + if (!binding.popupBubbleView.isShown) { + newMessagesCount = 1 + binding.popupBubbleView.show() + } else if (binding.popupBubbleView.isShown) { + newMessagesCount++ + } + } else { + newMessagesCount = 0 } }