module IHP.FlashMessages.ControllerFunctions where
import IHP.Prelude
import IHP.FlashMessages.Types
import IHP.Controller.Context
import IHP.Controller.Session
import qualified Data.Maybe as Maybe
setSuccessMessage :: (?context :: ControllerContext) => Text -> IO ()
setSuccessMessage :: (?context::ControllerContext) => Text -> IO ()
setSuccessMessage = forall value.
(?context::ControllerContext, Serialize value) =>
ByteString -> value -> IO ()
setSession ByteString
successMessageKey
setErrorMessage :: (?context :: ControllerContext) => Text -> IO ()
setErrorMessage :: (?context::ControllerContext) => Text -> IO ()
setErrorMessage = forall value.
(?context::ControllerContext, Serialize value) =>
ByteString -> value -> IO ()
setSession ByteString
errorMessageKey
getSuccessMessage :: (?context :: ControllerContext) => IO (Maybe Text)
getSuccessMessage :: (?context::ControllerContext) => IO (Maybe Text)
getSuccessMessage = forall value.
(?context::ControllerContext, Serialize value) =>
ByteString -> IO (Maybe value)
getSession ByteString
successMessageKey
clearSuccessMessage :: (?context :: ControllerContext) => IO ()
clearSuccessMessage :: (?context::ControllerContext) => IO ()
clearSuccessMessage = forall value.
(?context::ControllerContext, Serialize value) =>
ByteString -> value -> IO ()
setSession ByteString
successMessageKey (Text
"" :: Text)
getAndClearFlashMessages :: (?context :: ControllerContext) => IO [FlashMessage]
getAndClearFlashMessages :: (?context::ControllerContext) => IO [FlashMessage]
getAndClearFlashMessages = do
Maybe Text
successMessage <- forall value.
(?context::ControllerContext, Serialize value) =>
ByteString -> IO (Maybe value)
getSessionAndClear ByteString
successMessageKey
Maybe Text
errorMessage <- forall value.
(?context::ControllerContext, Serialize value) =>
ByteString -> IO (Maybe value)
getSessionAndClear ByteString
errorMessageKey
forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall a. [Maybe a] -> [a]
Maybe.catMaybes ((forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Text -> FlashMessage
SuccessFlashMessage Maybe Text
successMessage)forall a. a -> [a] -> [a]
:(forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Text -> FlashMessage
ErrorFlashMessage Maybe Text
errorMessage)forall a. a -> [a] -> [a]
:[])
successMessageKey :: ByteString
successMessageKey :: ByteString
successMessageKey = ByteString
"flashSuccessMessage"
errorMessageKey :: ByteString
errorMessageKey :: ByteString
errorMessageKey = ByteString
"flashErrorMessage"
initFlashMessages :: (?context :: ControllerContext) => IO ()
initFlashMessages :: (?context::ControllerContext) => IO ()
initFlashMessages = do
[FlashMessage]
flashMessages <- (?context::ControllerContext) => IO [FlashMessage]
getAndClearFlashMessages
forall value.
(?context::ControllerContext, Typeable value) =>
value -> IO ()
putContext [FlashMessage]
flashMessages