| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import React, { useMemo, ReactNode, ReactElement } from 'react';
- import Avatar from '../../avatar';
- import { Message, Metadata, RenderAvatarProps } from '../interface';
- import { cssClasses } from '@douyinfe/semi-foundation/chat/constants';
- import cls from 'classnames';
- const { PREFIX_CHAT_BOX } = cssClasses;
- interface ChatBoxAvatarProps {
- children?: string;
- role?: Metadata;
- continueSend?: boolean;
- message?: Message;
- customRenderFunc?: (props: RenderAvatarProps) => ReactNode
- }
- const ChatBoxAvatar = React.memo((props: ChatBoxAvatarProps) => {
- const { role, customRenderFunc, continueSend, message } = props;
- const node = useMemo(() => {
- const { avatar, color } = role;
- return (<Avatar
- className={cls(`${PREFIX_CHAT_BOX}-avatar`,
- {
- [`${PREFIX_CHAT_BOX}-avatar-hidden`]: continueSend
- })}
- src={avatar}
- size="extra-small"
- >
- </Avatar>);
- }, [role]);
- if (customRenderFunc && typeof customRenderFunc === 'function') {
- return customRenderFunc({
- role,
- defaultAvatar: node,
- message: message
- }) as ReactElement;
- }
- return node;
- });
- export default ChatBoxAvatar;
|