diff --git a/src/Handler/Blog.hs b/src/Handler/Blog.hs index b5c9ac2..cad37c2 100644 --- a/src/Handler/Blog.hs +++ b/src/Handler/Blog.hs @@ -10,18 +10,8 @@ module Handler.Blog import Data.WebsiteContent import Import import Yesod.AtomFeed (atomLink) -import Yesod.GitRepo (grContent) import RIO.Time (getCurrentTime) -getPosts :: Handler (Vector Post) -getPosts = do - now <- getCurrentTime - posts <- getYesod >>= fmap wcPosts . liftIO . grContent . appWebsiteContent - mpreview <- lookupGetParam "preview" - case mpreview of - Just "true" -> return posts - _ -> return $ filter (\p -> postTime p <= now) posts - getAddPreview :: Handler (Route App -> (Route App, [(Text, Text)])) getAddPreview = do mpreview <- lookupGetParam "preview" @@ -29,16 +19,6 @@ getAddPreview = do Just "true" -> return $ \route -> (route, [("preview", "true")]) _ -> return $ \route -> (route, []) -postYear :: Post -> Year -postYear p = - let (y, _, _) = toGregorian $ utctDay $ postTime p - in fromInteger y - -postMonth :: Post -> Month -postMonth p = - let (_, m, _) = toGregorian $ utctDay $ postTime p - in Month m - getBlogHomeR :: Handler () getBlogHomeR = do cacheSeconds 3600 diff --git a/src/Handler/Home.hs b/src/Handler/Home.hs index 78b37df..94efb1a 100644 --- a/src/Handler/Home.hs +++ b/src/Handler/Home.hs @@ -39,6 +39,9 @@ getHomeR = track "Handler.Snapshots.getAllSnapshotsR" $ do let groups = groupUp now' snapshots latestLtsNameWithHoogle <- getLatestLtsNameWithHoogle latestLtsByGhc <- getLatestLtsByGhc + + mrecentBlog <- headMay <$> getPosts + defaultLayout $ do setTitle "Stackage Server" $(widgetFile "home") diff --git a/src/Import.hs b/src/Import.hs index 8a96d16..67e1dc4 100644 --- a/src/Import.hs +++ b/src/Import.hs @@ -9,13 +9,14 @@ import Settings as Import import Settings.StaticFiles as Import import Types as Import import Yesod.Auth as Import -import Data.WebsiteContent as Import (WebsiteContent (..)) +import Data.WebsiteContent as Import (WebsiteContent (..), Post (..)) import Data.Text.Read (decimal) -import RIO.Time (diffUTCTime) +import RIO.Time (diffUTCTime, getCurrentTime) --import qualified Prometheus as P import Stackage.Database.Types (ModuleListingInfo(..)) import Formatting (format) import Formatting.Time (diff) +import Yesod.GitRepo (grContent) parseLtsPair :: Text -> Maybe (Int, Int) parseLtsPair t1 = do @@ -72,3 +73,22 @@ dateDiff (UTCTime now' _) target | otherwise = format (diff True) $ diffUTCTime (UTCTime target 0) (UTCTime now' 0) + +getPosts :: Handler (Vector Post) +getPosts = do + now <- getCurrentTime + posts <- getYesod >>= fmap wcPosts . liftIO . grContent . appWebsiteContent + mpreview <- lookupGetParam "preview" + case mpreview of + Just "true" -> return posts + _ -> return $ filter (\p -> postTime p <= now) posts + +postYear :: Post -> Year +postYear p = + let (y, _, _) = toGregorian $ utctDay $ postTime p + in fromInteger y + +postMonth :: Post -> Month +postMonth p = + let (_, m, _) = toGregorian $ utctDay $ postTime p + in Month m diff --git a/templates/home.hamlet b/templates/home.hamlet index 4dbea85..4dc1608 100644 --- a/templates/home.hamlet +++ b/templates/home.hamlet @@ -83,7 +83,13 @@