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 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,7 @@ import { reportsRouter } from "./routes/reports.js";
|
|||||||
import { appointmentGroupsRouter } from "./routes/appointmentGroups.js";
|
import { appointmentGroupsRouter } from "./routes/appointmentGroups.js";
|
||||||
import { groomingLogsRouter } from "./routes/groomingLogs.js";
|
import { groomingLogsRouter } from "./routes/groomingLogs.js";
|
||||||
import { settingsRouter } from "./routes/settings.js";
|
import { settingsRouter } from "./routes/settings.js";
|
||||||
|
import { getDb, businessSettings } from "@groombook/db";
|
||||||
import { authMiddleware } from "./middleware/auth.js";
|
import { authMiddleware } from "./middleware/auth.js";
|
||||||
import { devRouter } from "./routes/dev.js";
|
import { devRouter } from "./routes/dev.js";
|
||||||
import { startReminderScheduler } from "./services/reminders.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
|
// Public branding endpoint — no auth required, returns business name/colors/logo
|
||||||
app.get("/api/branding", async (c) => {
|
app.get("/api/branding", async (c) => {
|
||||||
const { getDb, businessSettings } = await import("@groombook/db");
|
|
||||||
const db = getDb();
|
const db = getDb();
|
||||||
const [row] = await db.select().from(businessSettings).limit(1);
|
const [row] = await db.select().from(businessSettings).limit(1);
|
||||||
const settings = row ?? { businessName: "GroomBook", primaryColor: "#4f8a6f", accentColor: "#8b7355", logoBase64: null, logoMimeType: null };
|
const settings = row ?? { businessName: "GroomBook", primaryColor: "#4f8a6f", accentColor: "#8b7355", logoBase64: null, logoMimeType: null };
|
||||||
|
|||||||
@@ -44,8 +44,9 @@ settingsRouter.patch(
|
|||||||
if (rows[0]) {
|
if (rows[0]) {
|
||||||
settingsId = rows[0].id;
|
settingsId = rows[0].id;
|
||||||
} else {
|
} else {
|
||||||
const inserted = await db.insert(businessSettings).values({}).returning();
|
const [inserted] = await db.insert(businessSettings).values({}).returning();
|
||||||
settingsId = inserted[0]!.id;
|
if (!inserted) throw new Error("Failed to create default settings");
|
||||||
|
settingsId = inserted.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
const [updated] = await db
|
const [updated] = await db
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ export function CustomerPortal() {
|
|||||||
className={`
|
className={`
|
||||||
w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors
|
w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm font-medium transition-colors
|
||||||
${active
|
${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"
|
: "text-stone-600 hover:bg-stone-50 hover:text-stone-900"
|
||||||
}
|
}
|
||||||
`}
|
`}
|
||||||
|
|||||||
Reference in New Issue
Block a user