import { HeroLayout, HeroLayoutTitle } from '@rocket.chat/layout'; import { useRouteParameter, useUserId } from '@rocket.chat/ui-contexts'; import { useEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import LoginPage from '../root/MainLayout/LoginPage'; import PageLoading from '../root/PageLoading'; import { useInviteTokenMutation } from './hooks/useInviteTokenMutation'; import { useSamlInviteToken } from './hooks/useSamlInviteToken'; import { useValidateInviteQuery } from './hooks/useValidateInviteQuery'; const InvitePage = () => { const { t } = useTranslation(); const token = useRouteParameter('hash'); const userId = useUserId(); const validateInvite = useValidateInviteQuery(token); const [, setToken] = useSamlInviteToken(); const tokenRef = useRef(''); const getInviteRoomMutation = useInviteTokenMutation(); useEffect(() => { // TODO: this is so hacky, get from the url and set the storage setToken(token || null); }, [setToken, token]); useEffect(() => { if (userId && token && !getInviteRoomMutation.submittedAt && tokenRef.current !== token) { tokenRef.current = token; getInviteRoomMutation.mutate(token); } }, [getInviteRoomMutation, setToken, token, userId]); if (validateInvite.isPending) { return ; } if (validateInvite.isSuccess && validateInvite.data) { return ; } return ( {t('Invalid_or_expired_invite_token')} ); }; export default InvitePage;