Extract duplicated code to function

The newly created function 'ChatController#determinePreviousMessageIds'
contains now the duplicated code from functions
'ChatCtonroller#processMessagesFromTheFuture' and
'ChatController#processMessagesNotFromTheFuture'.

Signed-off-by: Tim Krüger <t@timkrueger.me>
This commit is contained in:
Tim Krüger 2022-09-07 10:34:45 +02:00
parent 4cab75f6ed
commit 57ddf9af60
No known key found for this signature in database
GPG Key ID: FECE3A7222C52A4E

View File

@ -2382,22 +2382,7 @@ class ChatController(args: Bundle) :
val isThereANewNotice =
shouldAddNewMessagesNotice || adapter?.getMessagePositionByIdInReverse("-1") != -1
var previousMessageId = NO_PREVIOUS_MESSAGE_ID
for (i in chatMessageList.indices.reversed()) {
val chatMessageItem = chatMessageList[i]
if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
chatMessageItem.previousMessageId = previousMessageId
} else if (adapter?.isEmpty != true) {
if (adapter!!.items[0].item is ChatMessage) {
chatMessageItem.previousMessageId = (adapter!!.items[0].item as ChatMessage).jsonMessageId
} else if (adapter!!.items.size > 1 && adapter!!.items[1].item is ChatMessage) {
chatMessageItem.previousMessageId = (adapter!!.items[1].item as ChatMessage).jsonMessageId
}
}
previousMessageId = chatMessageItem.jsonMessageId
}
determinePreviousMessageIds(chatMessageList)
for (i in chatMessageList.indices) {
chatMessage = chatMessageList[i]
@ -2446,22 +2431,7 @@ class ChatController(args: Bundle) :
private fun processMessagesNotFromTheFuture(chatMessageList: List<ChatMessage>) {
var countGroupedMessages = 0
var previousMessageId = NO_PREVIOUS_MESSAGE_ID
for (i in chatMessageList.indices.reversed()) {
val chatMessage = chatMessageList[i]
if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
chatMessage.previousMessageId = previousMessageId
} else if (adapter?.isEmpty != true) {
if (adapter!!.items[0].item is ChatMessage) {
chatMessage.previousMessageId = (adapter!!.items[0].item as ChatMessage).jsonMessageId
} else if (adapter!!.items.size > 1 && adapter!!.items[1].item is ChatMessage) {
chatMessage.previousMessageId = (adapter!!.items[1].item as ChatMessage).jsonMessageId
}
}
previousMessageId = chatMessage.jsonMessageId
}
determinePreviousMessageIds(chatMessageList)
for (i in chatMessageList.indices) {
if (chatMessageList.size > i + 1) {
@ -2488,6 +2458,25 @@ class ChatController(args: Bundle) :
scrollToRequestedMessageIfNeeded()
}
private fun determinePreviousMessageIds(chatMessageList: List<ChatMessage>) {
var previousMessageId = NO_PREVIOUS_MESSAGE_ID
for (i in chatMessageList.indices.reversed()) {
val chatMessage = chatMessageList[i]
if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
chatMessage.previousMessageId = previousMessageId
} else if (adapter?.isEmpty != true) {
if (adapter!!.items[0].item is ChatMessage) {
chatMessage.previousMessageId = (adapter!!.items[0].item as ChatMessage).jsonMessageId
} else if (adapter!!.items.size > 1 && adapter!!.items[1].item is ChatMessage) {
chatMessage.previousMessageId = (adapter!!.items[1].item as ChatMessage).jsonMessageId
}
}
previousMessageId = chatMessage.jsonMessageId
}
}
private fun processHeaderChatLastGiven(response: Response<*>, isFromTheFuture: Boolean) {
val xChatLastGivenHeader: String? = response.headers()["X-Chat-Last-Given"]
if (response.headers().size > 0 && !TextUtils.isEmpty(xChatLastGivenHeader)) {