From 669e20a35ce361dfdfb21d4b104046d65eb3cecf Mon Sep 17 00:00:00 2001 From: openhands Date: Fri, 11 Sep 2026 23:28:22 +0200 Subject: [PATCH] refactor: add and use isValidCatalogLayout type guard for robust layout assignment --- .../admin/studio/organize-imports-dialog.tsx | 10 ++++++++-- src/lib/catalog-layouts.ts | 5 +++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/components/admin/studio/organize-imports-dialog.tsx b/src/components/admin/studio/organize-imports-dialog.tsx index 54a70f8e..d59aa385 100644 --- a/src/components/admin/studio/organize-imports-dialog.tsx +++ b/src/components/admin/studio/organize-imports-dialog.tsx @@ -34,7 +34,11 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; -import { CATALOG_LAYOUTS, type CatalogLayout } from "@/lib/catalog-layouts"; +import { + CATALOG_LAYOUTS, + type CatalogLayout, + isValidCatalogLayout, +} from "@/lib/catalog-layouts"; // import { CATALOG_LAYOUTS } from "@/lib/catalog-layouts"; import { getLocalIconUrl } from "@/lib/furni/classname"; import { cn } from "@/lib/utils"; @@ -745,7 +749,9 @@ export function OrganizeImportsDialog({ layout: group.layout === null ? undefined - : (group.layout as CatalogLayout), + : isValidCatalogLayout(group.layout) + ? group.layout + : undefined, }); }} > diff --git a/src/lib/catalog-layouts.ts b/src/lib/catalog-layouts.ts index ef980df4..df4fca62 100644 --- a/src/lib/catalog-layouts.ts +++ b/src/lib/catalog-layouts.ts @@ -23,6 +23,11 @@ export const CATALOG_LAYOUTS = [ export type CatalogLayout = (typeof CATALOG_LAYOUTS)[number]; +/** Type guard to check if a string is a valid CatalogLayout. */ +export function isValidCatalogLayout(layout: string): layout is CatalogLayout { + return (CATALOG_LAYOUTS as readonly string[]).includes(layout); +} + /** Short human-readable description for each layout. Shown in the layout selector. */ export const LAYOUT_DESCRIPTIONS: Record = { default_3x3: "Standard 3-column grid of items",