From 82208c220ac03b748b5997b11adc5e516d1d1b6c Mon Sep 17 00:00:00 2001 From: Emmanuel Pelletier Date: Tue, 23 Jul 2024 19:41:10 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F(frontend)=20tiny=20cleanup?= =?UTF-8?q?=20of=20the=20room=20regex=20related=20stuff?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit since this is used for the routing *and* for common validation, split a few things --- src/frontend/src/App.tsx | 4 ++-- src/frontend/src/features/rooms/index.ts | 2 +- src/frontend/src/features/rooms/utils/generateRoomId.ts | 2 -- src/frontend/src/features/rooms/utils/isRoomValid.ts | 5 +++++ 4 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 src/frontend/src/features/rooms/utils/isRoomValid.ts diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx index 8e9b7ea4..45b14798 100644 --- a/src/frontend/src/App.tsx +++ b/src/frontend/src/App.tsx @@ -7,7 +7,7 @@ import { useTranslation } from 'react-i18next' import { useLang } from 'hoofd' import { Route, Switch } from 'wouter' import { HomeRoute } from '@/features/home' -import { RoomRoute, roomIdRegex } from '@/features/rooms' +import { RoomRoute, roomRouteRegex } from '@/features/rooms' import { NotFound } from './routes/NotFound' import './i18n/init' import { RenderIfUserFetched } from './features/auth' @@ -23,7 +23,7 @@ function App() { - + diff --git a/src/frontend/src/features/rooms/index.ts b/src/frontend/src/features/rooms/index.ts index 2fa2d5bf..92a3af13 100644 --- a/src/frontend/src/features/rooms/index.ts +++ b/src/frontend/src/features/rooms/index.ts @@ -1,3 +1,3 @@ export { navigateToNewRoom } from './navigation/navigateToNewRoom' export { Room as RoomRoute } from './routes/Room' -export { roomIdRegex } from './utils/generateRoomId' +export { roomRouteRegex, isRoomValid } from './utils/isRoomValid' diff --git a/src/frontend/src/features/rooms/utils/generateRoomId.ts b/src/frontend/src/features/rooms/utils/generateRoomId.ts index a075ad50..6f46734e 100644 --- a/src/frontend/src/features/rooms/utils/generateRoomId.ts +++ b/src/frontend/src/features/rooms/utils/generateRoomId.ts @@ -12,5 +12,3 @@ const generateSegment = (length: number): string => // Generates a unique room identifier following the Google Meet format export const generateRoomId = () => [generateSegment(3), generateSegment(4), generateSegment(3)].join('-') - -export const roomIdRegex = /^[/](?[a-z]{3}-[a-z]{4}-[a-z]{3})$/ diff --git a/src/frontend/src/features/rooms/utils/isRoomValid.ts b/src/frontend/src/features/rooms/utils/isRoomValid.ts new file mode 100644 index 00000000..45abb040 --- /dev/null +++ b/src/frontend/src/features/rooms/utils/isRoomValid.ts @@ -0,0 +1,5 @@ +const roomIdPattern = '[a-z]{3}-[a-z]{4}-[a-z]{3}' +export const roomRouteRegex = new RegExp(`^[/](?${roomIdPattern})$`) + +export const isRoomValid = (roomId: string) => + new RegExp(`^${roomIdPattern}$`).test(roomId)