feat: 增加系统消息的信息渲染

pull/13/head
moonrailgun 4 years ago
parent b331bd7f23
commit 3dcbad68fd

@ -132,6 +132,7 @@ export type { AppStore, AppState, AppDispatch } from './redux/store';
// utils // utils
export { joinArray } from './utils/array-helper'; export { joinArray } from './utils/array-helper';
export { SYSTEM_USERID } from './utils/consts';
export { export {
shouldShowMessageTime, shouldShowMessageTime,
getMessageTimeDiff, getMessageTimeDiff,

@ -2,3 +2,8 @@
* *
*/ */
export const LANGUAGE_KEY = 'i18n:language'; export const LANGUAGE_KEY = 'i18n:language';
/**
* id
*/
export const SYSTEM_USERID = '000000000000000000000000';

@ -2,6 +2,7 @@ import React, { useMemo } from 'react';
import { import {
ChatMessage, ChatMessage,
formatShortTime, formatShortTime,
SYSTEM_USERID,
t, t,
useCachedUserInfo, useCachedUserInfo,
useChatBoxContext, useChatBoxContext,
@ -53,12 +54,10 @@ const MessageQuote: React.FC<{ payload: ChatMessage }> = React.memo(
); );
MessageQuote.displayName = 'MessageQuote'; MessageQuote.displayName = 'MessageQuote';
interface ChatMessageItemProps { /**
showAvatar: boolean; *
payload: ChatMessage; */
} const NormalMessage: React.FC<ChatMessageItemProps> = React.memo((props) => {
export const ChatMessageItem: React.FC<ChatMessageItemProps> = React.memo(
(props) => {
const { showAvatar, payload } = props; const { showAvatar, payload } = props;
const userInfo = useCachedUserInfo(payload.author ?? ''); const userInfo = useCachedUserInfo(payload.author ?? '');
@ -106,6 +105,36 @@ export const ChatMessageItem: React.FC<ChatMessageItemProps> = React.memo(
</Dropdown> </Dropdown>
</div> </div>
); );
});
NormalMessage.displayName = 'NormalMessage';
/**
*
*/
const SystemMessage: React.FC<ChatMessageItemProps> = React.memo(
({ payload }) => {
return (
<div className="text-center">
<div className="bg-black bg-opacity-20 rounded inline-block py-0.5 px-2 my-1 text-sm">
{payload.content}
</div>
</div>
);
}
);
SystemMessage.displayName = 'SystemMessage';
interface ChatMessageItemProps {
showAvatar: boolean;
payload: ChatMessage;
}
export const ChatMessageItem: React.FC<ChatMessageItemProps> = React.memo(
(props) => {
if (props.payload.author === SYSTEM_USERID) {
return <SystemMessage {...props} />;
}
return <NormalMessage {...props} />;
} }
); );
ChatMessageItem.displayName = 'ChatMessageItem'; ChatMessageItem.displayName = 'ChatMessageItem';

Loading…
Cancel
Save