From b50ad30176c36d239fc2d9941348c4906ddfeb17 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 30 Dec 2022 09:13:53 +0600 Subject: [PATCH] fixes in updateHandlerWithMediaGroupsAdaptation --- .../utils/updates/retrieving/MediaGroupsIncluder.kt | 13 +++++++++---- .../extensions/utils/updates/retrieving/Webhook.kt | 5 ++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/MediaGroupsIncluder.kt b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/MediaGroupsIncluder.kt index f4e43f6e6b..a5d490d4b5 100644 --- a/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/MediaGroupsIncluder.kt +++ b/tgbotapi.utils/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/MediaGroupsIncluder.kt @@ -1,5 +1,7 @@ package dev.inmo.tgbotapi.extensions.utils.updates.retrieving +import dev.inmo.micro_utils.coroutines.launchSafely +import dev.inmo.micro_utils.coroutines.launchSafelyWithoutExceptions import dev.inmo.tgbotapi.extensions.utils.updates.convertWithMediaGroupUpdates import dev.inmo.tgbotapi.types.message.abstracts.PossiblyMediaGroupMessage import dev.inmo.tgbotapi.types.update.abstracts.BaseMessageUpdate @@ -29,15 +31,18 @@ fun CoroutineScope.updateHandlerWithMediaGroupsAdaptation( ) launch { - launch { + launchSafelyWithoutExceptions { for (update in updatesChannel) { - when (val data = update.data) { - is PossiblyMediaGroupMessage<*> -> mediaGroupChannel.send("${data.mediaGroupId}${update::class.simpleName}" to update as BaseMessageUpdate) + val data = update.data + when { + data is PossiblyMediaGroupMessage<*> && data.mediaGroupId != null -> { + mediaGroupChannel.send("${data.mediaGroupId}${update::class.simpleName}" to update as BaseMessageUpdate) + } else -> output(update) } } } - launch { + launchSafelyWithoutExceptions { for ((_, mediaGroup) in mediaGroupAccumulatedChannel) { mediaGroup.convertWithMediaGroupUpdates().forEach { output(it) diff --git a/tgbotapi.utils/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/Webhook.kt b/tgbotapi.utils/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/Webhook.kt index 892894e6c5..a675fa27e3 100644 --- a/tgbotapi.utils/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/Webhook.kt +++ b/tgbotapi.utils/src/jvmMain/kotlin/dev/inmo/tgbotapi/extensions/utils/updates/retrieving/Webhook.kt @@ -41,10 +41,9 @@ fun Route.includeWebhookHandlingInRoute( post { try { runCatchingSafely { - val asJson = nonstrictJsonFormat.parseToJsonElement(call.receiveText()) - val update = nonstrictJsonFormat.decodeFromJsonElement( + val update = nonstrictJsonFormat.decodeFromString( UpdateDeserializationStrategy, - asJson + call.receiveText() ) transformer(update) }.onSuccess {