diff --git a/CHANGELOG.md b/CHANGELOG.md index 4472aca98..447028441 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## Pending changes -– +- [#296](https://github.com/bumble-tech/appyx/issues/296) – **Fixed**: `NodeConnector.intake` is now disposed when a `Node` is destroyed. --- diff --git a/libraries/interop-rx2/src/main/kotlin/com/bumble/appyx/interop/rx2/connectable/NodeConnector.kt b/libraries/interop-rx2/src/main/kotlin/com/bumble/appyx/interop/rx2/connectable/NodeConnector.kt index 88b74ad2a..a886e89be 100644 --- a/libraries/interop-rx2/src/main/kotlin/com/bumble/appyx/interop/rx2/connectable/NodeConnector.kt +++ b/libraries/interop-rx2/src/main/kotlin/com/bumble/appyx/interop/rx2/connectable/NodeConnector.kt @@ -5,6 +5,7 @@ import com.bumble.appyx.core.lifecycle.subscribe import com.jakewharton.rxrelay2.PublishRelay import com.jakewharton.rxrelay2.Relay import io.reactivex.Observer +import io.reactivex.disposables.Disposable class NodeConnector( override val input: Relay = PublishRelay.create(), @@ -15,6 +16,7 @@ class NodeConnector( private val exhaust: Relay = PublishRelay.create() private var isFlushed = false private val outputCache = mutableListOf() + private var intakeDisposable: Disposable? = null override val output: Relay = object : Relay() { @@ -31,7 +33,7 @@ class NodeConnector( } override fun onCreate(lifecycle: Lifecycle) { - lifecycle.subscribe(onCreate = { flushOutputCache() }) + lifecycle.subscribe(onCreate = { flushOutputCache() }, onDestroy = { intakeDisposable?.dispose() }) } private val cacheSubscription = intake.subscribe { @@ -55,7 +57,7 @@ class NodeConnector( } private fun switchToExhaust() { - intake.subscribe { exhaust.accept(it) } + intakeDisposable = intake.subscribe { exhaust.accept(it) } cacheSubscription.dispose() } }