import React, { useCallback } from 'react'; import { selectLocalPeer, selectSessionStore, useHMSActions, useHMSStore } from '@100mslive/react-sdk'; import { Button } from '../../../Button'; import { Box, Flex } from '../../../Layout'; import { Text } from '../../../Text'; import { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen'; import { useIsPeerBlacklisted } from '../hooks/useChatBlacklist'; import { SESSION_STORE_KEY } from '../../common/constants'; export const ChatPaused = () => { const hmsActions = useHMSActions(); const { elements } = useRoomLayoutConferencingScreen(); const can_disable_chat = !!elements?.chat?.real_time_controls?.can_disable_chat; const { enabled: isChatEnabled = true, updatedBy: chatStateUpdatedBy = '' } = useHMSStore(selectSessionStore(SESSION_STORE_KEY.CHAT_STATE)) || {}; const localPeer = useHMSStore(selectLocalPeer); const unPauseChat = useCallback( async () => await hmsActions.sessionStore.set(SESSION_STORE_KEY.CHAT_STATE, { enabled: true, updatedBy: { userName: localPeer?.name, userId: localPeer?.customerUserId, peerId: localPeer?.id }, updatedAt: Date.now(), }), [hmsActions, localPeer], ); return isChatEnabled ? null : ( Chat paused Chat has been paused by {chatStateUpdatedBy?.peerId === localPeer?.id ? 'you' : chatStateUpdatedBy?.userName} {can_disable_chat ? ( ) : ( <> )} ); }; export const ChatBlocked = () => { const isLocalPeerBlacklisted = useIsPeerBlacklisted({ local: true }); if (!isLocalPeerBlacklisted) { return null; } return ( You've been blocked from sending messages ); };