From 4cab4488462d1d9a1be7f9b0ec8e03aa75c538c7 Mon Sep 17 00:00:00 2001 From: Keagan McClelland Date: Mon, 28 Feb 2022 20:18:01 -0700 Subject: [PATCH] tolerate empty list of os versions --- src/Handler/Marketplace.hs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Handler/Marketplace.hs b/src/Handler/Marketplace.hs index 6657f5c..1756775 100644 --- a/src/Handler/Marketplace.hs +++ b/src/Handler/Marketplace.hs @@ -44,8 +44,7 @@ import Data.ByteString.Base64 import qualified Data.ByteString.Lazy as LBS import qualified Data.Conduit.List as CL import qualified Data.HashMap.Strict as HM -import Data.List ( head - , lookup +import Data.List ( lookup , sortOn ) import Data.String.Interpolate.IsString @@ -130,6 +129,7 @@ import Yesod.Core ( Content(ContentFile) , sendResponseStatus , typeOctet ) +import Yesod.Core.Types ( JSONResponse(..) ) import Yesod.Persist ( YesodDB ) import Yesod.Persist.Core ( YesodPersist(runDB) ) @@ -142,24 +142,24 @@ getInfoR = do pure cats pure $ InfoRes name $ categoryName . entityVal <$> allCategories -getEosVersionR :: Handler EosRes +getEosVersionR :: Handler (JSONResponse (Maybe EosRes)) getEosVersionR = do allEosVersions <- runDB $ select $ do vers <- from $ table @OsVersion orderBy [desc (vers ^. OsVersionCreatedAt)] pure vers - let osV = entityVal <$> allEosVersions - let latest = Data.List.head osV + let osV = entityVal <$> allEosVersions + let mLatest = head osV let mappedVersions = ReleaseNotes $ HM.fromList $ sortOn (Down . fst) $ (\v -> (osVersionNumber v, osVersionReleaseNotes v)) <$> osV - pure $ EosRes { eosResVersion = osVersionNumber latest - , eosResHeadline = osVersionHeadline latest - , eosResReleaseNotes = mappedVersions - } + pure . JSONResponse $ mLatest <&> \latest -> EosRes { eosResVersion = osVersionNumber latest + , eosResHeadline = osVersionHeadline latest + , eosResReleaseNotes = mappedVersions + } getReleaseNotesR :: PkgId -> Handler ReleaseNotes getReleaseNotesR pkg = do