2024-03-12 22:23:27 +00:00
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
|
2024-03-02 22:22:20 +00:00
|
|
|
module Main where
|
|
|
|
|
2024-03-12 22:23:27 +00:00
|
|
|
import Control.Monad.IO.Class (liftIO)
|
|
|
|
import Data.Text (Text)
|
|
|
|
import Miso (ToServerRoutes, View, h1_, text)
|
2024-03-06 01:45:07 +00:00
|
|
|
import Data.Proxy
|
|
|
|
import qualified Network.Wai as Wai
|
|
|
|
import qualified Network.Wai.Handler.Warp as Wai
|
|
|
|
import qualified Network.Wai.Middleware.RequestLogger as Wai
|
2024-03-06 07:32:32 +00:00
|
|
|
import Servant.API
|
2024-03-12 22:23:27 +00:00
|
|
|
import Servant.Server (Server, Handler (..), serve)
|
|
|
|
import qualified Lucid as L
|
2024-03-23 01:43:24 +00:00
|
|
|
-- import qualified Lucid.Base as L
|
2024-03-12 22:23:27 +00:00
|
|
|
|
2024-03-06 01:45:07 +00:00
|
|
|
|
|
|
|
import qualified Common.FrontEnd.Routes as FE
|
|
|
|
import qualified Common.FrontEnd.Action as FE
|
2024-03-12 22:23:27 +00:00
|
|
|
import qualified Common.FrontEnd.Model as FE
|
2024-03-06 01:45:07 +00:00
|
|
|
|
2024-03-23 01:27:12 +00:00
|
|
|
newtype HtmlPage a = HtmlPage (FE.Model, a)
|
2024-03-12 22:23:27 +00:00
|
|
|
|
|
|
|
instance (L.ToHtml a) => L.ToHtml (HtmlPage a) where
|
|
|
|
toHtmlRaw = L.toHtml
|
2024-03-23 01:27:12 +00:00
|
|
|
toHtml (HtmlPage (_, x)) = L.toHtml x
|
2024-03-12 22:23:27 +00:00
|
|
|
-- toHtml (HtmlPage x) = do
|
|
|
|
-- L.doctype_
|
|
|
|
-- L.head_ $ do
|
|
|
|
-- L.title_ "Chandlr"
|
|
|
|
-- L.meta_ [L.charset_ "utf-8"]
|
|
|
|
|
|
|
|
-- L.with (L.script_ mempty)
|
|
|
|
-- [ L.makeAttribute "src" "/static/all.js"
|
|
|
|
-- , L.makeAttribute "async" mempty
|
|
|
|
-- , L.makeAttribute "defer" mempty
|
|
|
|
-- ]
|
|
|
|
|
|
|
|
-- L.body_ (L.toHtml x)
|
2024-03-06 01:45:07 +00:00
|
|
|
|
|
|
|
type FrontEndRoutes = ToServerRoutes FE.Route HtmlPage FE.Action
|
|
|
|
|
2024-03-12 22:23:27 +00:00
|
|
|
handlers :: Server FrontEndRoutes
|
|
|
|
handlers = catalogView :<|> threadView :<|> searchView
|
|
|
|
|
|
|
|
catalogView :: Handler (HtmlPage (View FE.Action))
|
|
|
|
catalogView = do
|
|
|
|
liftIO $ putStrLn "Hello World"
|
|
|
|
|
2024-03-23 01:27:12 +00:00
|
|
|
pure $ HtmlPage (undefined, h1_ [] [ text "Hello World" ])
|
2024-03-12 22:23:27 +00:00
|
|
|
|
|
|
|
threadView :: Text -> Text -> FE.BoardThreadId -> Handler (HtmlPage (View FE.Action))
|
|
|
|
threadView = undefined
|
|
|
|
|
|
|
|
searchView :: Maybe Text -> Handler (HtmlPage (View FE.Action))
|
|
|
|
searchView = undefined
|
|
|
|
|
2024-03-06 01:45:07 +00:00
|
|
|
app :: Wai.Application
|
2024-03-12 22:23:27 +00:00
|
|
|
app = serve (Proxy @FrontEndRoutes) handlers
|
2024-03-06 01:45:07 +00:00
|
|
|
|
|
|
|
port :: Int
|
|
|
|
port = 8888
|
|
|
|
|
2024-03-02 22:22:20 +00:00
|
|
|
main :: IO ()
|
2024-03-06 01:45:07 +00:00
|
|
|
main = do
|
|
|
|
putStrLn $ "Serving front-end on port " ++ show port
|
|
|
|
|
|
|
|
Wai.run port $ Wai.logStdout app
|