module Session exposing ( Session ) import StorageWrapper as LS import HRInfo exposing ( HRInfo , HRApi ) import Time import Time.Extras exposing (Decoder as ) type alias Session = { storageCntrl : StorageCntrl } type alias StorageCntrl = { stats : List HRInfo , lsHandle : LS.Handler } type Msg = Storage | Schedule type StorageResponse = Opt Bool | Expiry Time.Posix | Stats (List HRInfo) | OptNotFound | ExpiryNotFound | StatsNotFound | LSError String begin : (Session, Cmd Msg) begin = let lsHandler = lsHandlerInit in ( Session (StorageCntrl [] lsHandler) , LS.getItem lsHandler "opt" Storage ) lsHandlerInit : LS.Handler StorageResponse lsHandlerInit = LS.init "bewilde.red/data" |> LS.handleItem "opt" JD.bool Opt |> LS.handleItem "expiry" |> LS.handleItemWithDefault "stats" (decodeStats) [] Stats |> LS.handleItemNotFound "opt" OptNotFound |> LS.handleItemNotFound "expiry" ExpiryNotFound |> LS.handleItemNotFound "stats" StatsNotFound |> LS.handleError LSError requestStatsPC : StorageCntrl -> String ->