fix: wrap all update action views in pageLayout so navbar persists on WebSocket updates

HyperView update actions replace only the hyper component — without pageLayout
the navbar disappears after any interactive action (create chore, navigate pages,
refresh, create household, etc.). Every hyper-returning update now wraps the
view in pageLayout us.
This commit is contained in:
2026-07-16 09:27:36 -04:00
parent 92f076f329
commit 6bea83be7d
4 changed files with 13 additions and 13 deletions
+2 -2
View File
@@ -44,10 +44,10 @@ instance (DB :> es, IOE :> es) => HyperView ActivityPage es where
Just us -> do Just us -> do
hhs <- getUserHouseholds (UserId (usUserId us)) hhs <- getUserHouseholds (UserId (usUserId us))
case hhs of case hhs of
[] -> pure $ hyper ActivityPage $ el "No households" [] -> pure $ hyper ActivityPage $ pageLayout us $ el "No households"
(h : _) -> do (h : _) -> do
log <- getActivityLog (unHouseholdId (householdId h)) pageNum 20 log <- getActivityLog (unHouseholdId (householdId h)) pageNum 20
pure $ hyper ActivityPage $ activityView log pure $ hyper ActivityPage $ pageLayout us $ activityView log
activityView :: ActivityLogPage -> View ActivityPage () activityView :: ActivityLogPage -> View ActivityPage ()
activityView log = do activityView log = do
+6 -6
View File
@@ -50,10 +50,10 @@ instance (DB :> es, IOE :> es) => HyperView ChoresPage es where
Just us -> do Just us -> do
hhs <- getUserHouseholds (UserId (usUserId us)) hhs <- getUserHouseholds (UserId (usUserId us))
case hhs of case hhs of
[] -> pure $ hyper ChoresPage $ el "No households" [] -> pure $ hyper ChoresPage $ pageLayout us $ el "No households"
(h : _) -> do (h : _) -> do
chores' <- getChores (unHouseholdId (householdId h)) chores' <- getChores (unHouseholdId (householdId h))
pure $ hyper ChoresPage $ choresView chores' pure $ hyper ChoresPage $ pageLayout us $ choresView chores'
update (CDeleteChore cid) = do update (CDeleteChore cid) = do
deleteChore (unChoreId cid) deleteChore (unChoreId cid)
update CRefreshChores update CRefreshChores
@@ -64,12 +64,12 @@ instance (DB :> es, IOE :> es) => HyperView ChoresPage es where
Just us -> do Just us -> do
hhs <- getUserHouseholds (UserId (usUserId us)) hhs <- getUserHouseholds (UserId (usUserId us))
case hhs of case hhs of
[] -> pure $ hyper ChoresPage $ el "No households" [] -> pure $ hyper ChoresPage $ pageLayout us $ el "No households"
(h : _) -> do (h : _) -> do
let hid = unHouseholdId (householdId h) let hid = unHouseholdId (householdId h)
chores' <- getChores hid chores' <- getChores hid
mems <- getMembers hid mems <- getMembers hid
pure $ hyper ChoresPage $ choresViewWithForm chores' mems pure $ hyper ChoresPage $ pageLayout us $ choresViewWithForm chores' mems
update CCreateChore = do update CCreateChore = do
form <- formData @ChoreFormData form <- formData @ChoreFormData
mUser <- lookupSession @UserSession mUser <- lookupSession @UserSession
@@ -78,14 +78,14 @@ instance (DB :> es, IOE :> es) => HyperView ChoresPage es where
Just us -> do Just us -> do
hhs <- getUserHouseholds (UserId (usUserId us)) hhs <- getUserHouseholds (UserId (usUserId us))
case hhs of case hhs of
[] -> pure $ hyper ChoresPage $ el "No households" [] -> pure $ hyper ChoresPage $ pageLayout us $ el "No households"
(h : _) -> do (h : _) -> do
let hid = unHouseholdId (householdId h) let hid = unHouseholdId (householdId h)
let schedule = parseSchedule (cfdStartDate form) let schedule = parseSchedule (cfdStartDate form)
assignee = parseAssignee (cfdAssignee form) assignee = parseAssignee (cfdAssignee form)
_ <- createChore hid (cfdName form) assignee schedule (cfdNotify form) _ <- createChore hid (cfdName form) assignee schedule (cfdNotify form)
chores' <- getChores hid chores' <- getChores hid
pure $ hyper ChoresPage $ choresView chores' pure $ hyper ChoresPage $ pageLayout us $ choresView chores'
---------------------------------------------------------------------- ----------------------------------------------------------------------
-- Views -- Views
+2 -2
View File
@@ -45,10 +45,10 @@ instance (DB :> es, IOE :> es) => HyperView DashboardPage es where
today <- liftIO (utctDay <$> getCurrentTime) today <- liftIO (utctDay <$> getCurrentTime)
hhs <- getUserHouseholds (UserId (usUserId us)) hhs <- getUserHouseholds (UserId (usUserId us))
case hhs of case hhs of
[] -> pure $ hyper DashboardPage $ el "No households" [] -> pure $ hyper DashboardPage $ pageLayout us $ el "No households"
(h : _) -> do (h : _) -> do
dash <- getDashboard (unHouseholdId (householdId h)) today dash <- getDashboard (unHouseholdId (householdId h)) today
pure $ hyper DashboardPage $ dashboardView dash pure $ hyper DashboardPage $ pageLayout us $ dashboardView dash
update (CheckOff _oid) = do update (CheckOff _oid) = do
-- TODO: wire up to activity form -- TODO: wire up to activity form
update RefreshDashboard update RefreshDashboard
+3 -3
View File
@@ -45,12 +45,12 @@ instance (DB :> es, IOE :> es) => HyperView HouseholdPage es where
Just us -> do Just us -> do
hhs <- getUserHouseholds (UserId (usUserId us)) hhs <- getUserHouseholds (UserId (usUserId us))
case hhs of case hhs of
[] -> pure $ hyper HouseholdPage noHouseholdView [] -> pure $ hyper HouseholdPage $ pageLayout us noHouseholdView
(h : _) -> do (h : _) -> do
let hid = unHouseholdId (householdId h) let hid = unHouseholdId (householdId h)
mems <- getMembers hid mems <- getMembers hid
invs <- getInvites hid invs <- getInvites hid
pure $ hyper HouseholdPage $ householdView h mems invs pure $ hyper HouseholdPage $ pageLayout us $ householdView h mems invs
update CreateHouseholdAction = do update CreateHouseholdAction = do
form <- formData @HouseholdFormData form <- formData @HouseholdFormData
mUser <- lookupSession @UserSession mUser <- lookupSession @UserSession
@@ -62,7 +62,7 @@ instance (DB :> es, IOE :> es) => HyperView HouseholdPage es where
let hid = unHouseholdId (householdId h) let hid = unHouseholdId (householdId h)
mems <- getMembers hid mems <- getMembers hid
invs <- getInvites hid invs <- getInvites hid
pure $ hyper HouseholdPage $ householdView h mems invs pure $ hyper HouseholdPage $ pageLayout us $ householdView h mems invs
update CreateInviteAction = do update CreateInviteAction = do
mUser <- lookupSession @UserSession mUser <- lookupSession @UserSession
case mUser of case mUser of