hpaste-1.2.0: src/Hpaste/Controller/Home.hs
{-# OPTIONS -Wall #-}
{-# LANGUAGE OverloadedStrings #-}
-- | Home page controller.
module Hpaste.Controller.Home
(handle)
where
import Hpaste.Types
import Hpaste.Controller.Cache (cacheIf)
import Hpaste.Controller.Paste (pasteForm)
import Hpaste.Model.Channel (getChannels)
import Hpaste.Model.Language (getLanguages)
import Hpaste.Model.Paste (getLatestPastes)
import Hpaste.Types.Cache as Key
import Hpaste.View.Home (page)
import Data.Maybe
import Snap.App
-- | Handle the home page, display a simple list and paste form.
handle :: Bool -> HPCtrl ()
handle spam = do
html <- cacheIf (not spam) Key.Home $ do
pastes <- model $ getLatestPastes
chans <- model $ getChannels
langs <- model $ getLanguages
form <- pasteForm chans langs Nothing Nothing Nothing
uri <- getMyURI
return $ Just $ page uri chans langs pastes form spam
maybe (return ()) outputText html