import { useUserId, useSetting } from '@rocket.chat/ui-contexts'; import type { ReactNode } from 'react'; import { useMemo } from 'react'; import PasswordChangeCheck from './PasswordChangeCheck'; import RegisterUsername from './RegisterUsername'; import { useUserInfoQuery } from '../../../hooks/useUserInfoQuery'; import HomeSkeleton from '../../home/HomeSkeleton'; export type UsernameCheckProps = { children: ReactNode }; const UsernameCheck = ({ children }: UsernameCheckProps) => { const userId = useUserId(); const { data: userData, isLoading } = useUserInfoQuery({ userId: userId || '' }, { enabled: !!userId }); const allowAnonymousRead = useSetting('Accounts_AllowAnonymousRead', false); const shouldRegisterUsername = useMemo(() => { const hasUserInCollection = !!userData?.user; const hasUsername = !!userData?.user?.username; if (!userId) { return !allowAnonymousRead; } if (!hasUserInCollection) { return true; } return !hasUsername; }, [userData?.user, userId, allowAnonymousRead]); if (isLoading) { return ; } if (shouldRegisterUsername) { return ; } return {children}; }; export default UsernameCheck;