package nova.monadic_sfx.util.reactive import io.odin.Logger import monix.reactive.Observable import monix.bio.Task import nova.monadic_sfx.util.IOUtils._ // object Middleware { // def apply[A,M,T](ob: Observable[(A,M)], cb: (A,M) => T): Observable[(A,M)] = ob // } object Middlewares { def actionStateLoggerMiddleware[A, M]( logger: Logger[Task] ): Middleware[A, M] = (obs: Observable[(A, M)]) => obs.doOnNext { case (a, m) => toTask(logger.debug(s"Received action $a with state $m")) } def actionLoggerMiddleware[A, M]( logger: Logger[Task] ): Middleware[A, M] = (obs: Observable[(A, M)]) => obs.doOnNext { case (a, _) => toTask(logger.debug(s"Received action $a ")) } }