module IHP.FlashMessages where
import Prelude
import Data.Text (Text)
import Data.Maybe (fromMaybe)
import IHP.Controller.Session
import qualified Network.Wai.Middleware.FlashMessages as FlashMessages
import Network.Wai.Middleware.FlashMessages (FlashMessage (..))
import Network.Wai
import qualified Data.Vault.Lazy as Vault
import System.IO.Unsafe (unsafePerformIO)
import qualified Text.Blaze.Html5 as Html5
import IHP.ViewSupport
import IHP.View.Types
setSuccessMessage :: (?request :: Request) => Text -> IO ()
setSuccessMessage :: (?request::Request) => Text -> IO ()
setSuccessMessage = SessionVaultKey -> Request -> Text -> IO ()
FlashMessages.setSuccessMessage SessionVaultKey
sessionVaultKey ?request::Request
Request
?request
setErrorMessage :: (?request :: Request) => Text -> IO ()
setErrorMessage :: (?request::Request) => Text -> IO ()
setErrorMessage = SessionVaultKey -> Request -> Text -> IO ()
FlashMessages.setErrorMessage SessionVaultKey
sessionVaultKey ?request::Request
Request
?request
getSuccessMessage :: (?request :: Request) => IO (Maybe Text)
getSuccessMessage :: (?request::Request) => IO (Maybe Text)
getSuccessMessage = SessionVaultKey -> Request -> IO (Maybe Text)
FlashMessages.getSuccessMessage SessionVaultKey
sessionVaultKey ?request::Request
Request
?request
clearSuccessMessage :: (?request :: Request) => IO ()
clearSuccessMessage :: (?request::Request) => IO ()
clearSuccessMessage = SessionVaultKey -> Request -> IO ()
FlashMessages.clearSuccessMessage SessionVaultKey
sessionVaultKey ?request::Request
Request
?request
flashVaultKey :: Vault.Key [FlashMessage]
flashVaultKey :: Key [FlashMessage]
flashVaultKey = IO (Key [FlashMessage]) -> Key [FlashMessage]
forall a. IO a -> a
unsafePerformIO IO (Key [FlashMessage])
forall a. IO (Key a)
Vault.newKey
{-# NOINLINE flashVaultKey #-}
consumeFlashMessagesMiddleware :: Middleware
consumeFlashMessagesMiddleware = SessionVaultKey -> Key [FlashMessage] -> Middleware
FlashMessages.consumeFlashMessagesMiddleware SessionVaultKey
sessionVaultKey Key [FlashMessage]
flashVaultKey
requestFlashMessages :: Request -> [FlashMessage]
requestFlashMessages :: Request -> [FlashMessage]
requestFlashMessages Request
request =
[FlashMessage] -> Maybe [FlashMessage] -> [FlashMessage]
forall a. a -> Maybe a -> a
fromMaybe [] (Maybe [FlashMessage] -> [FlashMessage])
-> Maybe [FlashMessage] -> [FlashMessage]
forall a b. (a -> b) -> a -> b
$ Key [FlashMessage] -> Request -> Maybe [FlashMessage]
FlashMessages.requestFlashMessages Key [FlashMessage]
flashVaultKey Request
request
renderFlashMessages :: (?request :: Request) => Html5.Html
renderFlashMessages :: (?request::Request) => Html
renderFlashMessages = [FlashMessage] -> Html
render [FlashMessage]
(?request::Request) => [FlashMessage]
theFlashMessages
where
render :: [FlashMessage] -> Html5.Html
render :: [FlashMessage] -> Html
render = Proxy "styledFlashMessages" -> [FlashMessage] -> Html
forall (field :: Symbol) appliedFunction.
(?request::Request, KnownSymbol field,
HasField field CSSFramework (CSSFramework -> appliedFunction)) =>
Proxy field -> appliedFunction
fromCSSFramework Proxy "styledFlashMessages"
#styledFlashMessages
theFlashMessages :: (?request :: Request) => [FlashMessage]
theFlashMessages :: (?request::Request) => [FlashMessage]
theFlashMessages = Request -> [FlashMessage]
requestFlashMessages ?request::Request
Request
?request