From 4956afacea359eee93aebf5747b628b07df2bc52 Mon Sep 17 00:00:00 2001 From: tayrinn Date: Tue, 23 May 2023 19:10:54 +0300 Subject: [PATCH] Remove observers in clearBinding method REVERT This reverts commit bfbcce99335a7bb4125b5b2041c2e246abb77178, reversing changes made to ff926efa381a376de48d97d522430aa9e129b361. --- .../yandex/div/core/expression/ExpressionsRuntime.kt | 1 - .../core/expression/variables/VariableController.kt | 11 ++--------- .../div/core/expression/variables/VariableSource.kt | 10 ---------- 3 files changed, 2 insertions(+), 20 deletions(-) diff --git a/client/android/div/src/main/java/com/yandex/div/core/expression/ExpressionsRuntime.kt b/client/android/div/src/main/java/com/yandex/div/core/expression/ExpressionsRuntime.kt index f2ee75782..4e2f0fe61 100644 --- a/client/android/div/src/main/java/com/yandex/div/core/expression/ExpressionsRuntime.kt +++ b/client/android/div/src/main/java/com/yandex/div/core/expression/ExpressionsRuntime.kt @@ -13,7 +13,6 @@ internal class ExpressionsRuntime( fun clearBinding() { triggersController.clearBinding() - variableController.removeGlobalObservers() } fun onAttachedToWindow(view: DivViewFacade) { diff --git a/client/android/div/src/main/java/com/yandex/div/core/expression/variables/VariableController.kt b/client/android/div/src/main/java/com/yandex/div/core/expression/variables/VariableController.kt index c169a3544..2c89e373c 100644 --- a/client/android/div/src/main/java/com/yandex/div/core/expression/variables/VariableController.kt +++ b/client/android/div/src/main/java/com/yandex/div/core/expression/variables/VariableController.kt @@ -7,6 +7,7 @@ import com.yandex.div.core.view2.errors.ErrorCollector import com.yandex.div.data.Variable import com.yandex.div.data.VariableDeclarationException import com.yandex.div.internal.Assert + import com.yandex.div.json.missingVariable @Mockable @@ -17,7 +18,6 @@ internal class VariableController { private var onAnyVariableChangeCallback: ((Variable) -> Unit)? = null private val notifyVariableChangedCallback = { v : Variable -> notifyVariableChanged(v) } - private val notifyVariableDeclaredCallback = { v : Variable -> onVariableDeclared(v) } private fun addObserver(name: String, observer: (Variable) -> Unit) { val observers = onChangeObservers.getOrPut(name) { @@ -92,7 +92,7 @@ internal class VariableController { */ fun addSource(source: VariableSource) { source.observeVariables(notifyVariableChangedCallback) - source.observeDeclaration(notifyVariableDeclaredCallback) + source.observeDeclaration { onVariableDeclared(it) } extraVariablesSources.add(source) } @@ -129,11 +129,4 @@ internal class VariableController { Assert.assertNull(onAnyVariableChangeCallback) onAnyVariableChangeCallback = callback } - - fun removeGlobalObservers() { - extraVariablesSources.forEach { - it.removeOnChangeObserver(notifyVariableChangedCallback) - it.removeDeclarationObserver(notifyVariableDeclaredCallback) - } - } } diff --git a/client/android/div/src/main/java/com/yandex/div/core/expression/variables/VariableSource.kt b/client/android/div/src/main/java/com/yandex/div/core/expression/variables/VariableSource.kt index 75da726e5..b25a0d104 100644 --- a/client/android/div/src/main/java/com/yandex/div/core/expression/variables/VariableSource.kt +++ b/client/android/div/src/main/java/com/yandex/div/core/expression/variables/VariableSource.kt @@ -25,14 +25,4 @@ internal class VariableSource( it.addObserver(observer) } } - - internal fun removeOnChangeObserver(observer: (Variable) -> Unit) { - variables.values.forEach { - it.removeObserver(observer) - } - } - - internal fun removeDeclarationObserver(observer: (Variable) -> Unit) { - declarationObservers.remove(observer) - } }