From 1de61b2b1cb28ea09add8b8b935b5fb85035ae89 Mon Sep 17 00:00:00 2001 From: Nikita Gazarov Date: Wed, 17 Nov 2021 15:13:46 -0800 Subject: [PATCH] Misc: Make base onAddedExternalObserver method abstract --- src/main/scala/com/raquo/airstream/core/BaseObservable.scala | 2 +- src/main/scala/com/raquo/airstream/core/EventStream.scala | 5 ++++- src/main/scala/com/raquo/airstream/core/Signal.scala | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/scala/com/raquo/airstream/core/BaseObservable.scala b/src/main/scala/com/raquo/airstream/core/BaseObservable.scala index e7126f14..0ffffd18 100644 --- a/src/main/scala/com/raquo/airstream/core/BaseObservable.scala +++ b/src/main/scala/com/raquo/airstream/core/BaseObservable.scala @@ -151,7 +151,7 @@ trait BaseObservable[+Self[+_] <: Observable[_], +A] extends Source[A] with Name protected[this] def addExternalObserver(observer: Observer[A], owner: Owner): Subscription - protected[this] def onAddedExternalObserver(@unused observer: Observer[A]): Unit = () + protected[this] def onAddedExternalObserver(@unused observer: Observer[A]): Unit /** Child observable should call this method on its parents when it is started. * This observable calls [[onStart]] if this action has given it its first observer (internal or external). diff --git a/src/main/scala/com/raquo/airstream/core/EventStream.scala b/src/main/scala/com/raquo/airstream/core/EventStream.scala index 82a0f642..1e6c73db 100644 --- a/src/main/scala/com/raquo/airstream/core/EventStream.scala +++ b/src/main/scala/com/raquo/airstream/core/EventStream.scala @@ -9,7 +9,7 @@ import com.raquo.airstream.debug.{DebuggableEventStream, Debugger, DebuggerEvent import com.raquo.airstream.distinct.DistinctEventStream import com.raquo.airstream.eventbus.EventBus import com.raquo.airstream.misc.generated._ -import com.raquo.airstream.misc.{CollectEventStream, DropEventStream, FilterEventStream, FoldLeftSignal, MapEventStream, SignalFromEventStream} +import com.raquo.airstream.misc.{CollectEventStream, FilterEventStream, FoldLeftSignal, MapEventStream, SignalFromEventStream} import com.raquo.airstream.split.{SplittableEventStream, SplittableOneEventStream} import com.raquo.airstream.timing.{FutureEventStream, _} @@ -130,6 +130,9 @@ trait EventStream[+A] extends Observable[A] with BaseObservable[EventStream, A] new DebuggerEventStream[A](this, debugger) } + /** This is used in Signal-s. It's a no-op for Streams. */ + override protected def onAddedExternalObserver(observer: Observer[A]): Unit = () + override def toObservable: EventStream[A] = this } diff --git a/src/main/scala/com/raquo/airstream/core/Signal.scala b/src/main/scala/com/raquo/airstream/core/Signal.scala index fba98414..b0cc37c3 100644 --- a/src/main/scala/com/raquo/airstream/core/Signal.scala +++ b/src/main/scala/com/raquo/airstream/core/Signal.scala @@ -134,7 +134,6 @@ trait Signal[+A] extends Observable[A] with BaseObservable[Signal, A] with Signa // @TODO[API] Use pattern match instead when isInstanceOf performance is fixed: https://github.com/scala-js/scala-js/issues/3815 override protected def onAddedExternalObserver(observer: Observer[A]): Unit = { - super.onAddedExternalObserver(observer) observer.onTry(tryNow()) // send current value immediately }