From 562e8c7429d49c8bbdf25bbff1280cd21ad6f9be Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Sat, 21 May 2022 17:33:44 +0600 Subject: [PATCH] improvements in Beheviour Context --- CHANGELOG.md | 3 +++ .../extensions/behaviour_builder/BehaviourContext.kt | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae526cf718..f6f06b926e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## 1.1.4 +* `Behaviour Builder`: + * Improvements in updates passing inside of subcontexts + ## 1.1.3 * `Behaviour Builder with FSM`: diff --git a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContext.kt b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContext.kt index b1c6d837b2..4621e6e242 100644 --- a/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContext.kt +++ b/tgbotapi.behaviour_builder/src/commonMain/kotlin/dev/inmo/tgbotapi/extensions/behaviour_builder/BehaviourContext.kt @@ -73,7 +73,10 @@ class DefaultBehaviourContext( private val additionalUpdatesSharedFlow = MutableSharedFlow(0, broadcastChannelsSize, onBufferOverflow) override val allUpdatesFlow: Flow = (additionalUpdatesSharedFlow.asSharedFlow()).let { if (upstreamUpdatesFlow != null) { - (it + upstreamUpdatesFlow).distinctUntilChanged { old, new -> old.updateId == new.updateId } + var lastHandledUpdate = -1L + (it + upstreamUpdatesFlow).filter { + (it.updateId > lastHandledUpdate).also { passed -> if (passed) { lastHandledUpdate = it.updateId } } + } } else { it }