Skip to content

Commit

Permalink
Record last triggered time
Browse files Browse the repository at this point in the history
  • Loading branch information
davesmith00000 committed Mar 28, 2024
1 parent 0e595ac commit a050f84
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
5 changes: 3 additions & 2 deletions tyrian/js/src/main/scala/tyrian/runtime/Renderer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import snabbdom.VNode
import tyrian.Html
import tyrian.Location

final case class Renderer(vnode: VNode, state: RendererState, lastTriggered: Double):
final case class Renderer(vnode: VNode, state: RendererState, lastTriggered: Long):
def redraw[Model, Msg](
time: Long,
model: Model,
view: Model => Html[Msg],
onMsg: Msg => Unit,
Expand All @@ -17,7 +18,7 @@ final case class Renderer(vnode: VNode, state: RendererState, lastTriggered: Dou
this.copy(
vnode = Rendering.render(vnode, model, view, onMsg, router),
state = RendererState.Running,
lastTriggered = 0
lastTriggered = time
)

object Renderer:
Expand Down
6 changes: 4 additions & 2 deletions tyrian/js/src/main/scala/tyrian/runtime/TyrianRuntime.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package tyrian.runtime

import cats.effect.kernel.Async
import cats.effect.kernel.Clock
import cats.effect.kernel.Ref
import cats.effect.std.AtomicCell
import cats.effect.std.Dispatcher
Expand Down Expand Up @@ -50,7 +51,7 @@ object TyrianRuntime:
currentSubs: AtomicCell[F, List[(String, F[Unit])]],
msgQueue: Queue[F, Msg],
renderer: Ref[F, Renderer]
)(using F: Async[F]): F[Nothing] =
)(using F: Async[F], clock: Clock[F]): F[Nothing] =
val runCmd: Cmd[F, Msg] => F[Unit] = runCommands(msgQueue)
val runSub: Sub[F, Msg] => F[Unit] = runSubscriptions(currentSubs, msgQueue, dispatcher)
val onMsg: Msg => Unit = postMsg(dispatcher, msgQueue)
Expand All @@ -67,7 +68,8 @@ object TyrianRuntime:

_ <- runCmd(cmdsAndSubs._1) *> runSub(cmdsAndSubs._2)
m <- model.get
_ <- renderer.update(_.redraw(m, view, onMsg, router))
t <- clock.realTime.map(_.toMillis)
_ <- renderer.update(_.redraw(t, m, view, onMsg, router))
} yield ()
}.foreverM

Expand Down

0 comments on commit a050f84

Please sign in to comment.