Add chat join messages
This commit is contained in:
@@ -11,6 +11,7 @@ import s from './ChatContainer.module.scss';
|
|||||||
import { ChatMessage } from '../../../interfaces/chat-message.model';
|
import { ChatMessage } from '../../../interfaces/chat-message.model';
|
||||||
import { ChatTextField, ChatUserMessage } from '..';
|
import { ChatTextField, ChatUserMessage } from '..';
|
||||||
import ChatModeratorNotification from '../ChatModeratorNotification/ChatModeratorNotification';
|
import ChatModeratorNotification from '../ChatModeratorNotification/ChatModeratorNotification';
|
||||||
|
import ChatActionMessage from '../ChatAction/ChatActionMessage';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
messages: ChatMessage[];
|
messages: ChatMessage[];
|
||||||
@@ -48,6 +49,17 @@ export default function ChatContainer(props: Props) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getUserJoinedMessage = (message: ChatMessage) => {
|
||||||
|
const { user } = message;
|
||||||
|
const { displayName, displayColor } = user;
|
||||||
|
const color = `var(--theme-user-colors-${displayColor})`;
|
||||||
|
return (
|
||||||
|
<ChatActionMessage
|
||||||
|
body={`<span style="color: ${color}">${displayName}</span> joined the chat.`}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const getConnectedInfoMessage = (message: ConnectedClientInfoEvent) => {
|
const getConnectedInfoMessage = (message: ConnectedClientInfoEvent) => {
|
||||||
const modStatusUpdate = checkIsModerator(message);
|
const modStatusUpdate = checkIsModerator(message);
|
||||||
if (!modStatusUpdate) {
|
if (!modStatusUpdate) {
|
||||||
@@ -78,6 +90,8 @@ export default function ChatContainer(props: Props) {
|
|||||||
return getNameChangeViewForMessage(message as NameChangeEvent);
|
return getNameChangeViewForMessage(message as NameChangeEvent);
|
||||||
case MessageType.CONNECTED_USER_INFO:
|
case MessageType.CONNECTED_USER_INFO:
|
||||||
return getConnectedInfoMessage(message);
|
return getConnectedInfoMessage(message);
|
||||||
|
case MessageType.USER_JOINED:
|
||||||
|
return getUserJoinedMessage(message as ChatMessage);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -262,11 +262,13 @@ export function ClientConfigStore() {
|
|||||||
break;
|
break;
|
||||||
case MessageType.CHAT:
|
case MessageType.CHAT:
|
||||||
setChatMessages(currentState => [...currentState, message as ChatEvent]);
|
setChatMessages(currentState => [...currentState, message as ChatEvent]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case MessageType.NAME_CHANGE:
|
case MessageType.NAME_CHANGE:
|
||||||
handleNameChangeEvent(message as ChatEvent, chatMessages, setChatMessages);
|
handleNameChangeEvent(message as ChatEvent, chatMessages, setChatMessages);
|
||||||
break;
|
break;
|
||||||
|
case MessageType.USER_JOINED:
|
||||||
|
setChatMessages(currentState => [...currentState, message as ChatEvent]);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
console.error('Unknown socket message type: ', message.type);
|
console.error('Unknown socket message type: ', message.type);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user