WIP! A BB-style forum, on the ATmosphere! We're still working... we'll be back soon when we have something to show off!
node typescript hono htmx atproto
at feat/atb-60-theme-import-export 23 lines 904 B view raw
1import type { MiddlewareHandler } from "hono"; 2import type { WebAppEnv } from "../lib/theme-resolution.js"; 3import { resolveTheme, FALLBACK_THEME } from "../lib/theme-resolution.js"; 4import { logger } from "../lib/logger.js"; 5 6export function createThemeMiddleware(appviewUrl: string): MiddlewareHandler<WebAppEnv> { 7 return async (c, next) => { 8 const cookieHeader = c.req.header("Cookie"); 9 const colorSchemeHint = c.req.header("Sec-CH-Prefers-Color-Scheme"); 10 let theme; 11 try { 12 theme = await resolveTheme(appviewUrl, cookieHeader, colorSchemeHint); 13 } catch (error) { 14 logger.error("createThemeMiddleware: resolveTheme threw unexpectedly — using fallback", { 15 operation: "createThemeMiddleware", 16 error: error instanceof Error ? error.message : String(error), 17 }); 18 theme = FALLBACK_THEME; 19 } 20 c.set("theme", theme); 21 await next(); 22 }; 23}