From 555afe4abd42b06a76028b411a266a5ff9f80b60 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Tue, 3 Mar 2026 19:48:20 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F(frontend)=20fix=20roomId=20R?= =?UTF-8?q?egExp=20recompilation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The regex was being recreated on every function call, causing unnecessary performance overhead. Hoist the RegExp to a module-level constant to reuse the compiled pattern. --- src/frontend/src/features/rooms/utils/isRoomValid.ts | 4 +++- src/frontend/src/routes.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/frontend/src/features/rooms/utils/isRoomValid.ts b/src/frontend/src/features/rooms/utils/isRoomValid.ts index 2cadf034..14ac6acb 100644 --- a/src/frontend/src/features/rooms/utils/isRoomValid.ts +++ b/src/frontend/src/features/rooms/utils/isRoomValid.ts @@ -4,8 +4,10 @@ export const roomIdPattern = '[a-z]{3}-[a-z]{4}-[a-z]{3}' export const flexibleRoomIdPattern = '(?:[a-zA-Z0-9]{3}-?[a-zA-Z0-9]{4}-?[a-zA-Z0-9]{3})' +const roomRegex = new RegExp(`^${roomIdPattern}$`) + export const isRoomValid = (roomIdOrUrl: string) => - new RegExp(`^${roomIdPattern}$`).test(roomIdOrUrl) || + roomRegex.test(roomIdOrUrl) || new RegExp(`^${window.location.origin}/${roomIdPattern}$`).test(roomIdOrUrl) export const normalizeRoomId = (roomId: string) => { diff --git a/src/frontend/src/routes.ts b/src/frontend/src/routes.ts index ed2ff1ac..5274b526 100644 --- a/src/frontend/src/routes.ts +++ b/src/frontend/src/routes.ts @@ -11,6 +11,8 @@ import { CreatePopup } from '@/features/sdk/routes/CreatePopup' import { CreateMeetingButton } from '@/features/sdk/routes/CreateMeetingButton' import { RecordingDownloadRoute } from '@/features/recording' +const roomIdRegex = new RegExp(`^[/](?${flexibleRoomIdPattern})$`) + export const routes: Record< | 'home' | 'room' @@ -37,7 +39,7 @@ export const routes: Record< room: { name: 'room', to: (roomId: string) => `/${roomId.trim()}`, - path: new RegExp(`^[/](?${flexibleRoomIdPattern})$`), + path: roomIdRegex, Component: RoomRoute, }, feedback: {