{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE StrictData #-}
module Headroom.UI.Message
( MessageType(..)
, Message(..)
, messageInfo
, messageWarn
, messageError
)
where
import Data.String.Interpolate ( i )
import RIO
data MessageType
= Info
| Warn
| Error
deriving (MessageType -> MessageType -> Bool
(MessageType -> MessageType -> Bool)
-> (MessageType -> MessageType -> Bool) -> Eq MessageType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageType -> MessageType -> Bool
$c/= :: MessageType -> MessageType -> Bool
== :: MessageType -> MessageType -> Bool
$c== :: MessageType -> MessageType -> Bool
Eq, Int -> MessageType -> ShowS
[MessageType] -> ShowS
MessageType -> String
(Int -> MessageType -> ShowS)
-> (MessageType -> String)
-> ([MessageType] -> ShowS)
-> Show MessageType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageType] -> ShowS
$cshowList :: [MessageType] -> ShowS
show :: MessageType -> String
$cshow :: MessageType -> String
showsPrec :: Int -> MessageType -> ShowS
$cshowsPrec :: Int -> MessageType -> ShowS
Show)
instance Display MessageType where
textDisplay :: MessageType -> Text
textDisplay MessageType
Info = Text
"[i]"
textDisplay MessageType
Warn = Text
"[!]"
textDisplay MessageType
Error = Text
"[x]"
data Message = Message MessageType Text
deriving (Message -> Message -> Bool
(Message -> Message -> Bool)
-> (Message -> Message -> Bool) -> Eq Message
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Message -> Message -> Bool
$c/= :: Message -> Message -> Bool
== :: Message -> Message -> Bool
$c== :: Message -> Message -> Bool
Eq, Int -> Message -> ShowS
[Message] -> ShowS
Message -> String
(Int -> Message -> ShowS)
-> (Message -> String) -> ([Message] -> ShowS) -> Show Message
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Message] -> ShowS
$cshowList :: [Message] -> ShowS
show :: Message -> String
$cshow :: Message -> String
showsPrec :: Int -> Message -> ShowS
$cshowsPrec :: Int -> Message -> ShowS
Show)
instance Display Message where
textDisplay :: Message -> Text
textDisplay (Message MessageType
tp Text
tx) = [i|#{textDisplay tp} #{tx}|]
messageInfo :: Text -> Message
messageInfo :: Text -> Message
messageInfo = MessageType -> Text -> Message
Message MessageType
Info
messageWarn :: Text -> Message
messageWarn :: Text -> Message
messageWarn = MessageType -> Text -> Message
Message MessageType
Warn
messageError :: Text -> Message
messageError :: Text -> Message
messageError = MessageType -> Text -> Message
Message MessageType
Error