feat: Hyperbole port compiles and builds successfully
- All page modules now use proper Page es '[ViewId] type with hyper embedding - Fixed view DSL: tag calls, String/Text conversions, polymorphic context types - DB effect uses convenience wrappers (lowercase) with send - HyperView instances have DB :> es, IOE :> es constraints - Main.hs uses liveAppWith with proper router - Static file serving deferred (will use nginx or wai-app-static) - Warning suppressions added where needed - Build produces working 25MB sis-server binary
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
{-# OPTIONS_GHC -Wno-unused-imports -Wno-unused-do-bind -Wno-name-shadowing -Wno-redundant-constraints -Wno-redundant-constraints #-}
|
||||
{-# LANGUAGE FlexibleContexts, DeriveAnyClass, DeriveGeneric, MultiParamTypeClasses, FlexibleInstances, UndecidableInstances, TypeApplications, TypeOperators, OverloadedStrings #-}
|
||||
|
||||
module Sis.Page.Activity (page) where
|
||||
|
||||
import Data.Text (Text)
|
||||
import Data.Text qualified as T
|
||||
import Effectful
|
||||
|
||||
import Sis.Database
|
||||
@@ -34,10 +36,10 @@ instance (DB :> es, IOE :> es) => HyperView ActivityPage es where
|
||||
Just us -> do
|
||||
hhs <- getUserHouseholds (UserId (usUserId us))
|
||||
case hhs of
|
||||
[] -> pure (el "No households")
|
||||
[] -> pure $ hyper ActivityPage $ el "No households"
|
||||
(h : _) -> do
|
||||
log <- getActivityLog (unHouseholdId (householdId h)) pageNum 20
|
||||
pure (activityView log)
|
||||
pure $ hyper ActivityPage $ activityView log
|
||||
|
||||
activityView :: ActivityLogPage -> View ActivityPage ()
|
||||
activityView log = do
|
||||
@@ -53,7 +55,7 @@ activityView log = do
|
||||
then button (GoToPage (alpPage log - 1)) @ att "class" nbButtonClass $ text "Previous"
|
||||
else none
|
||||
el @ att "style" "align-self:center" $
|
||||
text ("Page " <> show (alpPage log) <> " of " <> show totalPages)
|
||||
text ("Page " <> T.pack (show (alpPage log)) <> " of " <> T.pack (show totalPages))
|
||||
if alpPage log < totalPages
|
||||
then button (GoToPage (alpPage log + 1)) @ att "class" nbButtonClass $ text "Next"
|
||||
else none
|
||||
@@ -75,24 +77,24 @@ entryRow e = do
|
||||
text (" " <> statusText <> " ")
|
||||
el @ att "style" "font-weight:500" $ text (aleChoreName e)
|
||||
el @ att "style" "opacity:0.5" $
|
||||
text ("on " <> show (aleOccurrenceDate e))
|
||||
text ("on " <> T.pack (show (aleOccurrenceDate e)))
|
||||
case activityNote act of
|
||||
Just note ->
|
||||
el @ att "style" "opacity:0.5;font-style:italic;margin-left:0.5rem" $
|
||||
text ("\"" <> note <> "\"")
|
||||
Nothing -> none
|
||||
|
||||
page :: (Hyperbole :> es, DB :> es) => Eff es (View ActivityPage ())
|
||||
page :: (Hyperbole :> es, DB :> es, IOE :> es) => Page es '[ActivityPage]
|
||||
page = do
|
||||
mSession <- lookupSession @UserSession
|
||||
case mSession of
|
||||
Nothing -> do
|
||||
redirect (routeUri RouteLogin)
|
||||
pure (el "Redirecting...")
|
||||
pure $ hyper ActivityPage $ el "Redirecting..."
|
||||
Just us -> do
|
||||
hhs <- getUserHouseholds (UserId (usUserId us))
|
||||
case hhs of
|
||||
[] -> pure (el "No households")
|
||||
[] -> pure $ hyper ActivityPage $ el "No households"
|
||||
(h : _) -> do
|
||||
log <- getActivityLog (unHouseholdId (householdId h)) 1 20
|
||||
pure (activityView log)
|
||||
pure $ hyper ActivityPage $ activityView log
|
||||
|
||||
Reference in New Issue
Block a user