time-wasting-thread-memorial/web/src/Within/DBMemorial/Views/Thread.hs

26 lines
994 B
Haskell

{-# LANGUAGE OverloadedStrings #-}
module Within.DBMemorial.Views.Thread where
import Control.Monad (forM_)
import Data.Map (Map)
import qualified Data.Map as Map
import Data.Text (Text)
import Text.Blaze.Html
import Text.Blaze.Html5 as H hiding (map)
import Text.Blaze.Html5.Attributes as A
import qualified Within.DBMemorial.Post as Post
import qualified Within.DBMemorial.User as User
render :: Int -> [Post.Post] -> (Map Text User.User) -> Html
render pageNumber posts users = do
H.h1 ! A.class_ "center text-orange" $ H.toHtml ("Page " ++ (show pageNumber))
H.div ! A.class_ "row" $ do
forM_ posts $ \post -> do
let user = case (Post.author post) `Map.lookup` users of
Just u -> u
Nothing -> error "Can't find user? Impossible state."
Post.render post (User.render user)