module App
open Elmish
open System
open Fable.Core
open Types
open Model
open View
open Elmish.HMR // Elmish.HMR needs to be the last open instruction in order to be able to shadow any supported API
let init () =
if Cheat.manualSaves then
State.create, Cmd.ofMsg (Tick DateTime.Now)
else
Persistence.load State.create, Cmd.ofMsg (Tick DateTime.Now)
let timer onTick =
let start dispatch =
let intervalId =
JS.setInterval
(fun _ -> dispatch (onTick DateTime.Now))
250
{ new IDisposable with
member _.Dispose() = JS.clearInterval intervalId }
start
let subscribe model =
[ ["timer"], timer Tick ]
Program.mkProgram init update render
|> Program.withSubscription subscribe
|> Program.withReactSynchronous "feliz-app"
|> Program.run