Monadic WS
This commit is contained in:
parent
3dc0135b48
commit
01df3f1068
3 changed files with 114 additions and 13 deletions
40
backend/src/Types/WebSocketMessages/WebSocketMessages.hs
Normal file
40
backend/src/Types/WebSocketMessages/WebSocketMessages.hs
Normal file
|
@ -0,0 +1,40 @@
|
|||
{-# LANGUAGE DeriveGeneric #-}
|
||||
|
||||
module Types.WebSocketMessages.WebSocketMessages
|
||||
( WebSocketMessage (..),
|
||||
SetClientInfo (..),
|
||||
JoinRoom (..),
|
||||
)
|
||||
where
|
||||
|
||||
import ClassyPrelude
|
||||
import Data.Aeson
|
||||
( FromJSON (parseJSON),
|
||||
Options (sumEncoding),
|
||||
SumEncoding (..),
|
||||
decode,
|
||||
defaultOptions,
|
||||
genericParseJSON,
|
||||
withObject,
|
||||
(.:),
|
||||
)
|
||||
|
||||
data WebSocketMessage = ClientInfoMessage SetClientInfo | JoinRoomMessage JoinRoom
|
||||
deriving (Generic)
|
||||
|
||||
instance FromJSON WebSocketMessage where
|
||||
parseJSON = genericParseJSON defaultOptions {sumEncoding = UntaggedValue}
|
||||
|
||||
data SetClientInfo = SetClientInfo
|
||||
{ displayName :: Text
|
||||
}
|
||||
deriving (Generic, Show)
|
||||
|
||||
instance FromJSON SetClientInfo
|
||||
|
||||
data JoinRoom = JoinRoom
|
||||
{ roomName :: Text
|
||||
}
|
||||
deriving (Generic, Show)
|
||||
|
||||
instance FromJSON JoinRoom
|
Loading…
Add table
Add a link
Reference in a new issue