package nova.monadic_sfx.util.reactive import scala.concurrent.Future import monix.execution.Ack import monix.execution.Cancelable import monix.reactive.Observable import monix.reactive.Observer import monix.reactive.observers.Subscriber object MonixProSubject { def from[I, O]( observer: Observer[I], observable: Observable[O] ): MonixProSubject[I, O] = new Observable[O] with Observer[I] { override def onNext(elem: I): Future[Ack] = observer.onNext(elem) override def onError(ex: Throwable): Unit = observer.onError(ex) override def onComplete(): Unit = observer.onComplete() override def unsafeSubscribeFn(subscriber: Subscriber[O]): Cancelable = observable.unsafeSubscribeFn(subscriber) } }