From f7471b6c63f80618d0b91b16fb5545e0a3760cbe Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 12 Sep 2025 18:44:37 +0200 Subject: [PATCH] fix(boards): issues with old-import board name containing spaces (#4052) --- apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx | 4 ++++ apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx | 4 ++++ packages/modals-collection/src/boards/import-board-modal.tsx | 2 +- packages/old-import/src/analyse/analyse-oldmarr-import.ts | 2 +- packages/validation/src/board.ts | 2 +- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx index 31dfd48c3..a728e8949 100644 --- a/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx +++ b/apps/nextjs/src/app/[locale]/boards/[name]/settings/page.tsx @@ -61,6 +61,10 @@ const getBoardAndPermissionsAsync = async (params: Awaited) => notFound(); } + if (error instanceof TRPCError && error.code === "BAD_REQUEST") { + notFound(); + } + throw error; } }; diff --git a/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx b/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx index c04d6fe56..da1880963 100644 --- a/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx +++ b/apps/nextjs/src/app/[locale]/boards/_layout-creator.tsx @@ -45,6 +45,10 @@ export const createBoardLayout = ({ notFound(); } + if (error instanceof TRPCError && error.code === "BAD_REQUEST") { + notFound(); + } + throw error; }); const colorScheme = await getCurrentColorSchemeAsync(); diff --git a/packages/modals-collection/src/boards/import-board-modal.tsx b/packages/modals-collection/src/boards/import-board-modal.tsx index 2e8af5c84..1fd5cbfdf 100644 --- a/packages/modals-collection/src/boards/import-board-modal.tsx +++ b/packages/modals-collection/src/boards/import-board-modal.tsx @@ -59,7 +59,7 @@ export const ImportBoardModal = createModal(({ actions }) => { } setFileValid(true); - form.setFieldValue("configuration.name", result.data.configProperties.name); + form.setFieldValue("configuration.name", result.data.configProperties.name.replaceAll(" ", "-")); })(); }, }, diff --git a/packages/old-import/src/analyse/analyse-oldmarr-import.ts b/packages/old-import/src/analyse/analyse-oldmarr-import.ts index 5888d07f2..c526728af 100644 --- a/packages/old-import/src/analyse/analyse-oldmarr-import.ts +++ b/packages/old-import/src/analyse/analyse-oldmarr-import.ts @@ -29,7 +29,7 @@ export const analyseOldmarrImportAsync = async (file: File) => { } return { - name: entry.name.replace(".json", ""), + name: entry.name.replaceAll(" ", "-").replace(".json", ""), config: result.data ?? null, isError: !result.success, }; diff --git a/packages/validation/src/board.ts b/packages/validation/src/board.ts index b538a7076..2ce53a1eb 100644 --- a/packages/validation/src/board.ts +++ b/packages/validation/src/board.ts @@ -22,7 +22,7 @@ export const boardNameSchema = z .string() .min(1) .max(255) - .regex(/^[A-Za-z0-9-\\_]*$/); + .regex(/^[A-Za-z0-9-_]*$/); export const boardColumnCountSchema = z.number().min(1).max(24); export const boardByNameSchema = z.object({