diff --git a/core/src/TestLiveView.scala b/core/src/TestLiveView.scala index 9e3b24a..217d445 100644 --- a/core/src/TestLiveView.scala +++ b/core/src/TestLiveView.scala @@ -8,10 +8,10 @@ import zio.stream.ZStream import TestView.* class TestView extends LiveView[Msg, Model]: - def init = ZIO.succeed(Model()) + def init = Model() def update(model: Model) = - case Msg.UpdateModel(f) => ZIO.succeed(f(model)) + case Msg.UpdateModel(f) => f(model) def view(model: Dyn[Model]) = div( diff --git a/core/src/scalive/LiveView.scala b/core/src/scalive/LiveView.scala index 0073564..d3f167c 100644 --- a/core/src/scalive/LiveView.scala +++ b/core/src/scalive/LiveView.scala @@ -8,3 +8,5 @@ trait LiveView[Msg, Model]: def update(model: Model): Msg => Task[Model] def view(model: Dyn[Model]): HtmlElement def subscriptions(model: Model): ZStream[Any, Nothing, Msg] + + given [T]: Conversion[T, Task[T]] = ZIO.succeed(_) diff --git a/example/src/CounterLiveView.scala b/example/src/CounterLiveView.scala index a4e98d0..b659ac1 100644 --- a/example/src/CounterLiveView.scala +++ b/example/src/CounterLiveView.scala @@ -6,20 +6,19 @@ import zio.stream.ZStream class CounterLiveView() extends LiveView[Msg, Model]: - def init = ZIO.succeed( + def init = Model( isVisible = true, counter = 0 ) - ) def update(model: Model) = case Msg.ToggleCounter => - ZIO.succeed(model.focus(_.isVisible).modify(!_)) + model.focus(_.isVisible).modify(!_) case Msg.IncCounter => - ZIO.succeed(model.focus(_.counter).modify(_ + 1)) + model.focus(_.counter).modify(_ + 1) case Msg.DecCounter => - ZIO.succeed(model.focus(_.counter).modify(_ - 1)) + model.focus(_.counter).modify(_ - 1) def view(model: Dyn[Model]) = div( diff --git a/example/src/HomeLiveView.scala b/example/src/HomeLiveView.scala index 7a46948..ba635d6 100644 --- a/example/src/HomeLiveView.scala +++ b/example/src/HomeLiveView.scala @@ -9,9 +9,9 @@ class HomeLiveView() extends LiveView[String, Unit]: "/todo" -> "Todo" ) - def init = ZIO.succeed(()) + def init = () - def update(model: Unit) = _ => ZIO.succeed(model) + def update(model: Unit) = _ => model def view(model: Dyn[Unit]) = ul( diff --git a/example/src/ListLiveView.scala b/example/src/ListLiveView.scala index 1bfe974..138a353 100644 --- a/example/src/ListLiveView.scala +++ b/example/src/ListLiveView.scala @@ -6,7 +6,7 @@ import zio.stream.ZStream class ListLiveView(someParam: String) extends LiveView[Msg, Model]: - def init = ZIO.succeed( + def init = Model( elems = List( NestedModel("a", 10), @@ -14,11 +14,10 @@ class ListLiveView(someParam: String) extends LiveView[Msg, Model]: NestedModel("c", 20) ) ) - ) def update(model: Model) = case Msg.IncAge(value) => - ZIO.succeed(model.focus(_.elems.index(2).age).modify(_ + value)) + model.focus(_.elems.index(2).age).modify(_ + value) def view(model: Dyn[Model]) = div( diff --git a/example/src/TodoLiveView.scala b/example/src/TodoLiveView.scala index 45d6a95..a54893a 100644 --- a/example/src/TodoLiveView.scala +++ b/example/src/TodoLiveView.scala @@ -6,30 +6,24 @@ import zio.stream.ZStream class TodoLiveView() extends LiveView[Msg, Model]: - def init = ZIO.succeed(Model(List(Todo(99, "some task")))) + def init = Model(List(Todo(99, "Buy eggs"))) def update(model: Model) = case Msg.Add(text) => val nextId = model.todos.maxByOption(_.id).map(_.id).getOrElse(1) + 1 - ZIO.succeed( - model - .focus(_.todos) - .modify(_.appended(Todo(nextId, text))) - ) + model + .focus(_.todos) + .modify(_.appended(Todo(nextId, text))) case Msg.Remove(id) => - ZIO.succeed( - model - .focus(_.todos) - .modify(_.filterNot(_.id == id)) - ) + model + .focus(_.todos) + .modify(_.filterNot(_.id == id)) case Msg.ToggleCompletion(id) => - ZIO.succeed( - model - .focus(_.todos) - .modify( - _.map(todo => if todo.id == id then todo.copy(completed = todo.completed) else todo) - ) - ) + model + .focus(_.todos) + .modify( + _.map(todo => if todo.id == id then todo.copy(completed = todo.completed) else todo) + ) def view(model: Dyn[Model]) = div(