From 5c3cc639ac3521c66957621bddb082981a03d737 Mon Sep 17 00:00:00 2001 From: GroomBook CTO Date: Thu, 19 Mar 2026 07:59:20 +0000 Subject: [PATCH] fix: address review feedback on branding PR - Replace dynamic import with static import for @groombook/db in public branding endpoint - Restore active nav item background highlight (bg-stone-100) in CustomerPortal - Remove non-null assertion in settings route, add proper error handling Co-Authored-By: Claude Opus 4.6 --- apps/api/src/index.ts | 2 +- apps/api/src/routes/settings.ts | 5 +++-- apps/web/src/portal/CustomerPortal.tsx | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 0c09314..07a0014 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -13,6 +13,7 @@ import { reportsRouter } from "./routes/reports.js"; import { appointmentGroupsRouter } from "./routes/appointmentGroups.js"; import { groomingLogsRouter } from "./routes/groomingLogs.js"; import { settingsRouter } from "./routes/settings.js"; +import { getDb, businessSettings } from "@groombook/db"; import { authMiddleware } from "./middleware/auth.js"; import { devRouter } from "./routes/dev.js"; import { startReminderScheduler } from "./services/reminders.js"; @@ -40,7 +41,6 @@ app.route("/api/dev", devRouter); // Public branding endpoint — no auth required, returns business name/colors/logo app.get("/api/branding", async (c) => { - const { getDb, businessSettings } = await import("@groombook/db"); const db = getDb(); const [row] = await db.select().from(businessSettings).limit(1); const settings = row ?? { businessName: "GroomBook", primaryColor: "#4f8a6f", accentColor: "#8b7355", logoBase64: null, logoMimeType: null }; diff --git a/apps/api/src/routes/settings.ts b/apps/api/src/routes/settings.ts index 86c7090..2641c8c 100644 --- a/apps/api/src/routes/settings.ts +++ b/apps/api/src/routes/settings.ts @@ -44,8 +44,9 @@ settingsRouter.patch( if (rows[0]) { settingsId = rows[0].id; } else { - const inserted = await db.insert(businessSettings).values({}).returning(); - settingsId = inserted[0]!.id; + const [inserted] = await db.insert(businessSettings).values({}).returning(); + if (!inserted) throw new Error("Failed to create default settings"); + settingsId = inserted.id; } const [updated] = await db diff --git a/apps/web/src/portal/CustomerPortal.tsx b/apps/web/src/portal/CustomerPortal.tsx index 82e6d2d..e70543a 100644 --- a/apps/web/src/portal/CustomerPortal.tsx +++ b/apps/web/src/portal/CustomerPortal.tsx @@ -224,7 +224,7 @@ export function CustomerPortal() { className={` w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors ${active - ? "text-stone-800 font-semibold" + ? "bg-stone-100 text-stone-800 font-semibold" : "text-stone-600 hover:bg-stone-50 hover:text-stone-900" } `}