From b8601d4c90ef323574c8d86112e88d26681fa97a Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 22 Apr 2023 22:16:14 +0600 Subject: [PATCH] add opportunity to be called between resender sends --- .../src/commonMain/kotlin/MessagesResender.kt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/resender/src/commonMain/kotlin/MessagesResender.kt b/resender/src/commonMain/kotlin/MessagesResender.kt index 80439be..9b71d81 100644 --- a/resender/src/commonMain/kotlin/MessagesResender.kt +++ b/resender/src/commonMain/kotlin/MessagesResender.kt @@ -16,7 +16,8 @@ class MessagesResender( ) { suspend fun resend( targetChatId: IdChatIdentifier, - messagesInfo: List + messagesInfo: List, + onBetweenMessages: suspend (sent: List, toBeSent: List) -> Unit ): List> { val messagesWithOrders = messagesInfo.mapIndexed { i, messageInfo -> messageInfo to i }.toMap() val ordersWithMessagesGroups = messagesInfo.groupBy { it.group }.flatMap { (group, list) -> @@ -29,9 +30,14 @@ class MessagesResender( } }.sortedBy { it.first } + val sent = mutableListOf() + val leftToSend = ordersWithMessagesGroups.map { it.second }.toMutableList() + return ordersWithMessagesGroups.flatMap { (_, contents) -> val sourceMessagesToSentMessages = mutableListOf>() + onBetweenMessages(sent.toList(), leftToSend.flatten()) + when { contents.size == 1 -> { val messageInfo = contents.first() @@ -137,8 +143,15 @@ class MessagesResender( } } + leftToSend.takeIf { it.isNotEmpty() } ?.removeAt(0) ?.also { + sent.addAll(it) + } sourceMessagesToSentMessages.toList() } - } + + suspend fun resend( + targetChatId: IdChatIdentifier, + messagesInfo: List + ): List> = resend(targetChatId, messagesInfo) { _, _ -> } }