/* eslint-disable react/no-unknown-property */ import { useRecoilValue } from 'recoil'; import { useEffect } from 'react'; import { ErrorBoundary } from 'react-error-boundary'; import { useTranslation } from 'next-export-i18n'; import { ChatMessage } from '../../../../interfaces/chat-message.model'; import { ChatContainer } from '../../../../components/chat/ChatContainer/ChatContainer'; import { ClientConfigStore, currentUserAtom, visibleChatMessagesSelector, clientConfigStateAtom, appStateAtom, serverStatusState, isChatAvailableSelector, chatAuthenticatedAtom, } from '../../../../components/stores/ClientConfigStore'; import Header from '../../../../components/ui/Header/Header'; import { ClientConfig } from '../../../../interfaces/client-config.model'; import { AppStateOptions } from '../../../../components/stores/application-state'; import { ServerStatus } from '../../../../interfaces/server-status.model'; import { Theme } from '../../../../components/theme/Theme'; import { ComponentError } from '../../../../components/ui/ComponentError/ComponentError'; import { Localization } from '../../../../types/localization'; export default function ReadWriteChatEmbed() { const { t } = useTranslation(); const currentUser = useRecoilValue(currentUserAtom); const messages = useRecoilValue(visibleChatMessagesSelector); const clientConfig = useRecoilValue(clientConfigStateAtom); const clientStatus = useRecoilValue(serverStatusState); const appState = useRecoilValue(appStateAtom); const isChatAvailable = useRecoilValue(isChatAvailableSelector); const isUserAuthenticated = useRecoilValue(chatAuthenticatedAtom); const { name, chatDisabled, chatRequireAuthentication } = clientConfig; // Determine if chat input should be enabled based on authentication requirements. // Moderators bypass the authentication requirement. const chatInputEnabled = !!( isChatAvailable && (!chatRequireAuthentication || isUserAuthenticated || currentUser?.isModerator) ); const chatInputDisabledMessage = chatRequireAuthentication ? t(Localization.Frontend.Chat.authenticateToChat) : t(Localization.Frontend.chatDisabled); const { videoAvailable } = appState; const { streamTitle, online } = clientStatus; const headerText = online ? streamTitle || name : name; // This is a hack to force a specific body background color for just this page. useEffect(() => { document.body.classList.add('body-background'); }, []); return (
( )} >
{currentUser && (
)}
); }