From ec3715e2b9153f12cd2162cb357b31fc28fc353c Mon Sep 17 00:00:00 2001 From: viktor-reznik Date: Tue, 7 May 2024 13:25:20 +0300 Subject: [PATCH] don't report visibility action if divData was changed f8f70b59d0916b60cb174d099c68eb93a568addd --- .../com/yandex/div/core/view2/DivVisibilityActionTracker.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/android/div/src/main/java/com/yandex/div/core/view2/DivVisibilityActionTracker.kt b/client/android/div/src/main/java/com/yandex/div/core/view2/DivVisibilityActionTracker.kt index ecd644fbf..83692ab35 100644 --- a/client/android/div/src/main/java/com/yandex/div/core/view2/DivVisibilityActionTracker.kt +++ b/client/android/div/src/main/java/com/yandex/div/core/view2/DivVisibilityActionTracker.kt @@ -256,6 +256,7 @@ internal class DivVisibilityActionTracker @Inject constructor( return@associateTo compositeLogId to action }.let { Collections.synchronizedMap(it) } trackedTokens.add(logIds) + val originalDivData = scope.divData /* We use map of CompositeLogId to DivSightAction as token here, so we can cancel * individual actions while still execute the rest of it as a bulk. */ handler.postDelayed(delayInMillis = delayMs, token = logIds) { @@ -267,7 +268,9 @@ internal class DivVisibilityActionTracker @Inject constructor( divWithWaitingDisappearActions.remove(view) } } - visibilityActionDispatcher.dispatchActions(scope, resolver, view, logIds.values.toTypedArray()) + if (scope.divData === originalDivData) { + visibilityActionDispatcher.dispatchActions(scope, resolver, view, logIds.values.toTypedArray()) + } } }