summaryrefslogtreecommitdiff
path: root/Biz/Ibb/Core.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Biz/Ibb/Core.hs')
-rw-r--r--Biz/Ibb/Core.hs154
1 files changed, 0 insertions, 154 deletions
diff --git a/Biz/Ibb/Core.hs b/Biz/Ibb/Core.hs
deleted file mode 100644
index ec6ef10..0000000
--- a/Biz/Ibb/Core.hs
+++ /dev/null
@@ -1,154 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-
--- | Main app logic
-module Biz.Ibb.Core where
-
-import Alpha
-import Data.Aeson hiding (Success)
-import Data.Data
- ( Data,
- Typeable,
- )
-import Data.Text (Text)
-import GHC.Generics (Generic)
-import Miso
-import Miso.String
-import Network.RemoteData
-import Servant.API
-import Servant.Links
-
--- * entity data types
-
-data Person = Person
- { -- | Their full name.
- _name :: Text,
- -- | A link to their picture.
- _pic :: Text,
- -- | Their twitter handle, without the `@` prefix.
- _twitter :: Text,
- -- | Their main website, fully formed: `https://example.com`
- _website :: Text,
- -- | A short list of the books they recommend.
- _books :: [Book],
- -- | A short "about" section, like you would see on the jacket flap of a book.
- _blurb :: Text
- }
- deriving (Generic, Show, Eq, Typeable, Data, Ord)
-
-instance FromJSON Person
-
-instance ToJSON Person
-
-data Book = Book
- { _title :: Text,
- _author :: Text,
- -- | Amazon REF number, for creating affiliate links.
- _amznref :: Text
- }
- deriving (Generic, Show, Eq, Typeable, Data, Ord)
-
-instance FromJSON Book
-
-instance ToJSON Book
-
--- * app data types
-
-type AppRoutes = Home
-
-type Home = View Action
-
-data Model = Model
- { uri :: URI,
- people :: WebData [Person]
- }
- deriving (Show, Eq)
-
-type WebData a = RemoteData MisoString a
-
-init :: URI -> Model
-init u = Model u Loading
-
-data Action
- = Nop
- | ChangeRoute URI
- | HandleRoute URI
- | FetchPeople
- | SetPeople (WebData [Person])
- deriving (Show, Eq)
-
-home :: Model -> View Action
-home = see
-
-handlers :: Model -> View Action
-handlers = home
-
-notfound :: View Action
-notfound = div_ [] [text "404"]
-
-goHome :: URI
-goHome = linkURI <| safeLink (Proxy :: Proxy AppRoutes) (Proxy :: Proxy Home)
-
-see :: Model -> View Action
-see m =
- div_
- [class_ "container mt-5"]
- [ div_
- [class_ "jumbotron"]
- [ h1_ [class_ "display-4"] [text "Influenced by books"],
- p_
- [class_ "lead"]
- [text "Influential people and the books that made them."],
- p_
- [class_ "lead"]
- [ a_
- [href_ "http://eepurl.com/ghBFjv"]
- [ text
- "Get new book recommendations from the world's influencers in your email."
- ]
- ]
- ],
- div_ [class_ "card-columns"] <| case people m of
- NotAsked -> [text "Initializing..."]
- Loading -> [text "Loading..."]
- Failure err -> [text err]
- Success ps -> seePerson </ ps
- ]
-
-seePerson :: Person -> View Action
-seePerson person =
- div_
- [class_ "card"]
- [ div_
- [class_ "card-img"]
- [img_ [class_ "card-img img-fluid", src_ <| ms <| _pic person]],
- div_
- [class_ "card-body"]
- [ h4_ [class_ "card-title"] [text <| ms <| _name person],
- h6_
- []
- [ a_
- [ class_ "fab fa-twitter",
- href_ <| "https://twitter.com/" <> ms (_twitter person)
- ]
- [],
- a_ [class_ "fas fa-globe", href_ <| ms <| _website person] []
- ],
- p_
- [class_ "card-text"]
- [text <| ms <| _blurb person, ul_ [] <| seeBook </ _books person]
- ]
- ]
-
-seeBook :: Book -> View Action
-seeBook book =
- li_
- []
- [ a_
- [ class_ "text-dark",
- href_ <| "https://www.amazon.com/dp/" <> ms (_amznref book)
- ]
- [text <| ms <| _title book]
- ]