import type { MiddlewareHandler } from "hono"; import type { WebAppEnv } from "../lib/theme-resolution.js"; import { resolveTheme, FALLBACK_THEME } from "../lib/theme-resolution.js"; import { logger } from "../lib/logger.js"; export function createThemeMiddleware(appviewUrl: string): MiddlewareHandler { return async (c, next) => { const cookieHeader = c.req.header("Cookie"); const colorSchemeHint = c.req.header("Sec-CH-Prefers-Color-Scheme"); let theme; try { theme = await resolveTheme(appviewUrl, cookieHeader, colorSchemeHint); } catch (error) { logger.error("createThemeMiddleware: resolveTheme threw unexpectedly — using fallback", { operation: "createThemeMiddleware", error: error instanceof Error ? error.message : String(error), }); theme = FALLBACK_THEME; } c.set("theme", theme); await next(); }; }