You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
746 B
27 lines
746 B
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 "))
|
|
}
|
|
}
|