mirror of
https://github.com/suitenumerique/meet.git
synced 2026-08-17 05:57:48 +00:00
8072d2c950
Refactor the duplicateIdentity boolean URL parameter into an extensible string reason parameter, making it easier to customize the disconnection message shown to users. Avoid passing this value via URL parameters, which are easy to manipulate. Instead, use Wouter’s built-in navigation state to pass data across pages. This was initially missed because navigateTo is a wrapper around Wouter’s official navigation function, and its arguments were easy to overlook. This is now fixed. This prepares the ground for supporting additional disconnection reasons in upcoming commits.
82 lines
2.2 KiB
TypeScript
82 lines
2.2 KiB
TypeScript
import {
|
|
FeedbackRoute,
|
|
RoomRoute,
|
|
flexibleRoomIdPattern,
|
|
} from '@/features/rooms'
|
|
import { HomeRoute } from '@/features/home'
|
|
import { LegalTermsRoute } from '@/features/legalsTerms/LegalTermsRoute'
|
|
import { AccessibilityRoute } from '@/features/legalsTerms/Accessibility'
|
|
import { TermsOfServiceRoute } from '@/features/legalsTerms/TermsOfService'
|
|
import { CreatePopup } from '@/features/sdk/routes/CreatePopup'
|
|
import { CreateMeetingButton } from '@/features/sdk/routes/CreateMeetingButton'
|
|
import { RecordingDownloadRoute } from '@/features/recording'
|
|
|
|
export const routes: Record<
|
|
| 'home'
|
|
| 'room'
|
|
| 'feedback'
|
|
| 'legalTerms'
|
|
| 'accessibility'
|
|
| 'termsOfService'
|
|
| 'sdkCreatePopup'
|
|
| 'sdkCreateButton'
|
|
| 'recordingDownload',
|
|
{
|
|
name: RouteName
|
|
path: RegExp | string
|
|
Component: () => JSX.Element
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
to?: (...args: any[]) => string | URL
|
|
}
|
|
> = {
|
|
home: {
|
|
name: 'home',
|
|
path: '/',
|
|
Component: HomeRoute,
|
|
},
|
|
room: {
|
|
name: 'room',
|
|
to: (roomId: string) => `/${roomId.trim()}`,
|
|
path: new RegExp(`^[/](?<roomId>${flexibleRoomIdPattern})$`),
|
|
Component: RoomRoute,
|
|
},
|
|
feedback: {
|
|
name: 'feedback',
|
|
path: '/feedback',
|
|
Component: FeedbackRoute,
|
|
},
|
|
legalTerms: {
|
|
name: 'legalTerms',
|
|
path: '/mentions-legales',
|
|
Component: LegalTermsRoute,
|
|
},
|
|
accessibility: {
|
|
name: 'accessibility',
|
|
path: '/accessibilite',
|
|
Component: AccessibilityRoute,
|
|
},
|
|
termsOfService: {
|
|
name: 'termsOfService',
|
|
path: '/conditions-utilisation',
|
|
Component: TermsOfServiceRoute,
|
|
},
|
|
sdkCreatePopup: {
|
|
name: 'sdkCreatePopup',
|
|
path: '/sdk/create-popup',
|
|
Component: CreatePopup,
|
|
},
|
|
sdkCreateButton: {
|
|
name: 'sdkCreateButton',
|
|
path: '/sdk/create-button',
|
|
Component: CreateMeetingButton,
|
|
},
|
|
recordingDownload: {
|
|
name: 'recordingDownload',
|
|
path: /^\/recording\/(?<recordingId>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/,
|
|
to: (recordingId: string) => `/recording/${recordingId.trim()}`,
|
|
Component: RecordingDownloadRoute,
|
|
},
|
|
}
|
|
|
|
export type RouteName = keyof typeof routes
|