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
);
};