package nova.monadic_sfx.modules import nova.monadic_sfx.executors.Schedulers import monix.execution.Scheduler import nova.monadic_sfx.http.requests.DummyRequest import monix.eval.Task import akka.{actor => classic} import cats.effect.Resource import nova.monadic_sfx.AppTypes trait MainModule { import com.softwaremill.macwire._ // val schedulers: Schedulers = new Schedulers() // implicit val defaultScheduler: Scheduler = schedulers.fx // val program = // for { // backend <- Backend() // fxActorSystem <- // Resource // .make(Task { // classic.ActorSystem( // name = "FXActorSystem" // ) // })(sys => Task(sys.terminate())) // } yield { // val dummyRequester = wire[DummyRequest] // dummyRequester.send() // } // val program = Backend().use(backend => // Resource // .make(Task { // classic.ActorSystem( // name = "FXActorSystem" // ) // })(sys => Task(sys.terminate())) // .use { implicit system => // // system.spa // // system.typed // // val javaFxActor = system.actorOf( // // Props[JavaFxActor]().withDispatcher("javafx-dispatcher"), // // "javaFxActor" // // ) // // val swingActor = system.actorOf( // // Props[SwingActor]().withDispatcher("swing-dispatcher"), // // "swingActor" // // ) // Task(new DummyRequest(backend)) >> // Task.unit // } // ) def schedulers: Schedulers def defaultScheduler: Scheduler def backendTask: Task[AppTypes.HttpBackend] def actorSystemTask: Task[classic.ActorSystem] def deps = for { backend <- backendTask actorSystem <- actorSystemTask dummyRequesterTask <- Task { wireDeps(backend, actorSystem) } } yield dummyRequesterTask def wireDeps( backend: AppTypes.HttpBackend, system: classic.ActorSystem ): DummyRequest = { wire[DummyRequest] // new DummyRequest(backend) } }