easemob-chat-uikit
Version:
   ![GitHub last c
36 lines (35 loc) • 1.78 kB
TypeScript
import React, { FC, ReactNode } from 'react';
import { ChatSDK } from '../SDK';
import { renderUserProfileProps } from '../baseMessage';
import { CurrentConversation } from '../store/ConversationStore';
import { BaseMessageProps } from '../baseMessage';
import { NoticeMessageBody } from '../noticeMessage/NoticeMessage';
export interface MessageRenderContext {
message: ChatSDK.MessageBody | NoticeMessageBody;
style: React.CSSProperties;
renderUserProfile?: (props: renderUserProfileProps) => React.ReactNode;
isThread?: boolean;
messageProps?: BaseMessageProps;
onOpenThreadPanel?: (threadId: string) => void;
onRtcInviteMessageClick?: (message: ChatSDK.MessageBody) => void;
scrollToBottom?: () => void;
}
export type MessageType = 'txt' | 'img' | 'audio' | 'video' | 'file' | 'loc' | 'combine' | 'custom' | 'notice' | 'recall';
export type MessageRenderer = (context: MessageRenderContext) => ReactNode;
export interface MsgListProps {
prefix?: string;
className?: string;
style?: React.CSSProperties;
isThread?: boolean;
/** @deprecated 使用 customRenderers 替代,支持按类型自定义 */
renderMessage?: (message: ChatSDK.MessageBody | NoticeMessageBody) => ReactNode;
/** 按消息类型自定义渲染器,只需要传入想自定义的类型即可,其他类型会使用默认渲染 */
customRenderers?: Partial<Record<MessageType, MessageRenderer>>;
renderUserProfile?: (props: renderUserProfileProps) => React.ReactNode;
conversation?: CurrentConversation;
messageProps?: BaseMessageProps;
onOpenThreadPanel?: (threadId: string) => void;
onRtcInviteMessageClick?: (message: ChatSDK.MessageBody) => void;
}
declare let MessageList: FC<MsgListProps>;
export { MessageList };