import type { RoomType } from '@rocket.chat/core-typings'; import { Box, States, StatesIcon, StatesSubtitle, StatesTitle } from '@rocket.chat/fuselage'; import { Header } from '@rocket.chat/ui-client'; import { lazy, Suspense } from 'react'; import { useTranslation } from 'react-i18next'; import NotSubscribedRoom from './NotSubscribedRoom'; import RoomSkeleton from './RoomSkeleton'; import { useOpenRoom } from './hooks/useOpenRoom'; import { getErrorMessage } from '../../lib/errorHandling'; import { NotAuthorizedError } from '../../lib/errors/NotAuthorizedError'; import { NotSubscribedToRoomError } from '../../lib/errors/NotSubscribedToRoomError'; import { OldUrlRoomError } from '../../lib/errors/OldUrlRoomError'; import { RoomNotFoundError } from '../../lib/errors/RoomNotFoundError'; const RoomProvider = lazy(() => import('./providers/RoomProvider')); const RoomNotFound = lazy(() => import('./RoomNotFound')); const Room = lazy(() => import('./Room')); const RoomLayout = lazy(() => import('./layout/RoomLayout')); const NotAuthorizedPage = lazy(() => import('../notAuthorized/NotAuthorizedPage')); export type RoomOpenerProps = { type: RoomType; reference: string; }; const RoomOpener = ({ type, reference }: RoomOpenerProps) => { const { data, error, isSuccess, isError, isLoading } = useOpenRoom({ type, reference }); const { t } = useTranslation(); return ( }> {isLoading && } {isSuccess && ( )} {isError && (() => { if (error instanceof OldUrlRoomError) { return ; } if (error instanceof RoomNotFoundError) { return ; } if (error instanceof NotSubscribedToRoomError) { return ; } if (error instanceof NotAuthorizedError) { return ; } return ( } body={ {t('core.Error')} {getErrorMessage(error)} } /> ); })()} ); }; export default RoomOpener;