list collections

This commit is contained in:
Alexander Foremny
2024-06-06 22:52:33 +02:00
parent b1a4822d59
commit 3add980b73
3 changed files with 32 additions and 12 deletions

View File

@@ -1,7 +1,8 @@
{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}
module Api
( fetchSchema,
( fetchCollections,
fetchSchema,
fetchSchemaVersion,
fetchPosts,
fetchPost,
@@ -28,14 +29,18 @@ import Safe
import Schema
import Version
fetchSchema :: JSM (Either String Schema)
fetchSchema =
A.eitherDecode <$> fetch (fromString "http://localhost:8081/posts.schema.json")
fetchCollections :: JSM (Either String [String])
fetchCollections =
A.eitherDecode <$> fetch (fromString "http://localhost:8081/collections")
fetchSchemaVersion :: JSM (Either String Version)
fetchSchemaVersion =
A.eitherDecode <$> fetch (fromString "http://localhost:8081/schemaVersion")
fetchSchema :: JSM (Either String Schema)
fetchSchema =
A.eitherDecode <$> fetch (fromString "http://localhost:8081/posts.schema.json")
fetchPosts :: JSM (Either String [A.Value])
fetchPosts =
A.eitherDecode

View File

@@ -23,8 +23,9 @@ data Model
deriving (Show, Eq)
data LoadedState = LoadedState
{ page :: Maybe (Either String Page),
schemaVersion :: Version
{ collections :: [String],
schemaVersion :: Version,
page :: Maybe (Either String Page)
}
deriving (Show, Eq)
@@ -69,8 +70,10 @@ updateModel (Init uri) Loading =
Loading <# do
page <- Just <$> initialPage (parseURI uri)
schemaVersion' <- fetchSchemaVersion
collections' <- fetchCollections
pure $ SetLoaded do
schemaVersion <- schemaVersion'
collections <- collections'
pure LoadedState {..}
updateModel (Init _) m = noEff m
updateModel (SetLoaded (Left err)) Loading = noEff (Failed err)
@@ -98,7 +101,7 @@ viewModel (Loaded s) =
div_ [] $
[ viewCss,
viewHeader s,
nav_ [] [viewCollections],
nav_ [] [viewCollections s],
main_ [] $
[ HandlePage <$> maybe (text "..") (either err viewPage) s.page
]
@@ -208,12 +211,17 @@ viewBranch s =
select_ [] [option_ [] [text "main"]]
]
viewCollections :: View Action
viewCollections =
viewCollections :: LoadedState -> View Action
viewCollections s =
section_ [] $
[ span_ [] [text "collections"],
ol_ [] $
[ li_ [] [a_ [href_ "#collection/posts"] [text "posts"]],
li_ [] [a_ [href_ "#collection/posts1"] [text "posts1"]]
[ li_
[]
[ a_
[href_ (toMisoString ("#collection/" <> collection))]
[text (toMisoString collection)]
]
| collection <- s.collections
]
]