From 6bea83be7d6df3106e9aff2f2ee30ddaa4d4340b Mon Sep 17 00:00:00 2001 From: James Brechtel Date: Thu, 16 Jul 2026 09:27:36 -0400 Subject: [PATCH] fix: wrap all update action views in pageLayout so navbar persists on WebSocket updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- src/Sis/Page/Activity.hs | 4 ++-- src/Sis/Page/Chores.hs | 12 ++++++------ src/Sis/Page/Dashboard.hs | 4 ++-- src/Sis/Page/Household.hs | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Sis/Page/Activity.hs b/src/Sis/Page/Activity.hs index 8d5ea19..883870f 100644 --- a/src/Sis/Page/Activity.hs +++ b/src/Sis/Page/Activity.hs @@ -44,10 +44,10 @@ instance (DB :> es, IOE :> es) => HyperView ActivityPage es where Just us -> do hhs <- getUserHouseholds (UserId (usUserId us)) case hhs of - [] -> pure $ hyper ActivityPage $ el "No households" + [] -> pure $ hyper ActivityPage $ pageLayout us $ el "No households" (h : _) -> do log <- getActivityLog (unHouseholdId (householdId h)) pageNum 20 - pure $ hyper ActivityPage $ activityView log + pure $ hyper ActivityPage $ pageLayout us $ activityView log activityView :: ActivityLogPage -> View ActivityPage () activityView log = do diff --git a/src/Sis/Page/Chores.hs b/src/Sis/Page/Chores.hs index 0c3d1af..d2ac840 100644 --- a/src/Sis/Page/Chores.hs +++ b/src/Sis/Page/Chores.hs @@ -50,10 +50,10 @@ instance (DB :> es, IOE :> es) => HyperView ChoresPage es where Just us -> do hhs <- getUserHouseholds (UserId (usUserId us)) case hhs of - [] -> pure $ hyper ChoresPage $ el "No households" + [] -> pure $ hyper ChoresPage $ pageLayout us $ el "No households" (h : _) -> do chores' <- getChores (unHouseholdId (householdId h)) - pure $ hyper ChoresPage $ choresView chores' + pure $ hyper ChoresPage $ pageLayout us $ choresView chores' update (CDeleteChore cid) = do deleteChore (unChoreId cid) update CRefreshChores @@ -64,12 +64,12 @@ instance (DB :> es, IOE :> es) => HyperView ChoresPage es where Just us -> do hhs <- getUserHouseholds (UserId (usUserId us)) case hhs of - [] -> pure $ hyper ChoresPage $ el "No households" + [] -> pure $ hyper ChoresPage $ pageLayout us $ el "No households" (h : _) -> do let hid = unHouseholdId (householdId h) chores' <- getChores hid mems <- getMembers hid - pure $ hyper ChoresPage $ choresViewWithForm chores' mems + pure $ hyper ChoresPage $ pageLayout us $ choresViewWithForm chores' mems update CCreateChore = do form <- formData @ChoreFormData mUser <- lookupSession @UserSession @@ -78,14 +78,14 @@ instance (DB :> es, IOE :> es) => HyperView ChoresPage es where Just us -> do hhs <- getUserHouseholds (UserId (usUserId us)) case hhs of - [] -> pure $ hyper ChoresPage $ el "No households" + [] -> pure $ hyper ChoresPage $ pageLayout us $ el "No households" (h : _) -> do let hid = unHouseholdId (householdId h) let schedule = parseSchedule (cfdStartDate form) assignee = parseAssignee (cfdAssignee form) _ <- createChore hid (cfdName form) assignee schedule (cfdNotify form) chores' <- getChores hid - pure $ hyper ChoresPage $ choresView chores' + pure $ hyper ChoresPage $ pageLayout us $ choresView chores' ---------------------------------------------------------------------- -- Views diff --git a/src/Sis/Page/Dashboard.hs b/src/Sis/Page/Dashboard.hs index 856fb73..1ad3d79 100644 --- a/src/Sis/Page/Dashboard.hs +++ b/src/Sis/Page/Dashboard.hs @@ -45,10 +45,10 @@ instance (DB :> es, IOE :> es) => HyperView DashboardPage es where today <- liftIO (utctDay <$> getCurrentTime) hhs <- getUserHouseholds (UserId (usUserId us)) case hhs of - [] -> pure $ hyper DashboardPage $ el "No households" + [] -> pure $ hyper DashboardPage $ pageLayout us $ el "No households" (h : _) -> do dash <- getDashboard (unHouseholdId (householdId h)) today - pure $ hyper DashboardPage $ dashboardView dash + pure $ hyper DashboardPage $ pageLayout us $ dashboardView dash update (CheckOff _oid) = do -- TODO: wire up to activity form update RefreshDashboard diff --git a/src/Sis/Page/Household.hs b/src/Sis/Page/Household.hs index 6ff69ac..b32b2df 100644 --- a/src/Sis/Page/Household.hs +++ b/src/Sis/Page/Household.hs @@ -45,12 +45,12 @@ instance (DB :> es, IOE :> es) => HyperView HouseholdPage es where Just us -> do hhs <- getUserHouseholds (UserId (usUserId us)) case hhs of - [] -> pure $ hyper HouseholdPage noHouseholdView + [] -> pure $ hyper HouseholdPage $ pageLayout us noHouseholdView (h : _) -> do let hid = unHouseholdId (householdId h) mems <- getMembers hid invs <- getInvites hid - pure $ hyper HouseholdPage $ householdView h mems invs + pure $ hyper HouseholdPage $ pageLayout us $ householdView h mems invs update CreateHouseholdAction = do form <- formData @HouseholdFormData mUser <- lookupSession @UserSession @@ -62,7 +62,7 @@ instance (DB :> es, IOE :> es) => HyperView HouseholdPage es where let hid = unHouseholdId (householdId h) mems <- getMembers hid invs <- getInvites hid - pure $ hyper HouseholdPage $ householdView h mems invs + pure $ hyper HouseholdPage $ pageLayout us $ householdView h mems invs update CreateInviteAction = do mUser <- lookupSession @UserSession case mUser of