[Gradle][MPP] ObservableSet.addAll: Incrementally add elements and invoke listeners

^KT-52726 Verification Pending
This commit is contained in:
Sebastian Sellmair
2022-09-07 16:40:08 +02:00
committed by Space
parent 74b2285877
commit 134ed4bae1
@@ -32,19 +32,15 @@ internal class MutableObservableSet<T>(vararg elements: T) : ObservableSet<T>, M
} }
override fun addAll(elements: Collection<T>): Boolean { override fun addAll(elements: Collection<T>): Boolean {
val toAdd = elements.toSet() - underlying val elementsToAdd = elements.toSet() - underlying
return underlying.addAll(toAdd).also { elementsToAdd.forEach(this::add)
toAdd.forEach { added -> return elementsToAdd.isNotEmpty()
whenObjectAddedActions.toList().forEach { action -> action(added) }
forAllActions.toList().forEach { action -> action(added) }
}
}
} }
override fun add(element: T): Boolean { override fun add(element: T): Boolean {
return underlying.add(element).also { return underlying.add(element).also {
whenObjectAddedActions.toList().forEach { action -> action(element) } whenObjectAddedActions.toTypedArray().forEach { action -> action(element) }
forAllActions.toList().forEach { action -> action(element) } forAllActions.toTypedArray().forEach { action -> action(element) }
} }
} }