You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.1 KiB

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 ->