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

  1. package nova.monadic_sfx.util.reactive
  2. import io.odin.Logger
  3. import monix.reactive.Observable
  4. import monix.bio.Task
  5. import nova.monadic_sfx.util.IOUtils._
  6. // object Middleware {
  7. // def apply[A,M,T](ob: Observable[(A,M)], cb: (A,M) => T): Observable[(A,M)] = ob
  8. // }
  9. object Middlewares {
  10. def actionStateLoggerMiddleware[A, M](
  11. logger: Logger[Task]
  12. ): Middleware[A, M] =
  13. (obs: Observable[(A, M)]) =>
  14. obs.doOnNext {
  15. case (a, m) => toTask(logger.debug(s"Received action $a with state $m"))
  16. }
  17. def actionLoggerMiddleware[A, M](
  18. logger: Logger[Task]
  19. ): Middleware[A, M] =
  20. (obs: Observable[(A, M)]) =>
  21. obs.doOnNext {
  22. case (a, _) => toTask(logger.debug(s"Received action $a "))
  23. }
  24. }