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