32 lines
563 B
Haskell
32 lines
563 B
Haskell
{-# LANGUAGE NamedFieldPuns #-}
|
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
module Session (
|
|
Status(..)
|
|
, T(..)
|
|
, Update
|
|
, open
|
|
) where
|
|
|
|
import Network.WebSockets (Connection)
|
|
import qualified RW (RW(..))
|
|
|
|
newtype Status = Status {
|
|
loggedIn :: Bool
|
|
} deriving (Show)
|
|
|
|
data T = T {
|
|
connection :: Connection
|
|
, status :: Status
|
|
}
|
|
type Update = T -> T
|
|
|
|
instance RW.RW Status T where
|
|
get = status
|
|
set status session = session {status}
|
|
|
|
open :: Connection -> T
|
|
open connection = T {
|
|
connection
|
|
, status = Status False
|
|
}
|