stream-chat-react
Version:
React components to create chat conversations or livestream style chat
34 lines (33 loc) • 2.26 kB
TypeScript
import React, { ReactNode } from 'react';
import type { UserResponse } from 'stream-chat';
import { GroupStyle } from './utils';
import { ComponentContextValue, CustomClasses } from '../../context';
import type { ChannelUnreadUiState, DefaultStreamChatGenerics } from '../../types';
import type { StreamMessage } from '../../context/ChannelStateContext';
import type { MessageProps } from '../Message';
export interface RenderMessagesOptions<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> {
components: ComponentContextValue<StreamChatGenerics>;
lastReceivedMessageId: string | null;
messageGroupStyles: Record<string, GroupStyle>;
messages: Array<StreamMessage<StreamChatGenerics>>;
/**
* Object mapping message IDs of own messages to the users who read those messages.
*/
readData: Record<string, Array<UserResponse<StreamChatGenerics>>>;
/**
* Props forwarded to the Message component.
*/
sharedMessageProps: SharedMessageProps<StreamChatGenerics>;
/**
* Current user's channel read state used to render components reflecting unread state.
* It does not reflect the back-end state if a channel is marked read on mount.
* This is in order to keep the unread UI when an unread channel is open.
*/
channelUnreadUiState?: ChannelUnreadUiState<StreamChatGenerics>;
customClasses?: CustomClasses;
}
export type SharedMessageProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = Omit<MessageProps<StreamChatGenerics>, MessagePropsToOmit>;
export type MessageRenderer<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = (options: RenderMessagesOptions<StreamChatGenerics>) => Array<ReactNode>;
type MessagePropsToOmit = 'channel' | 'groupStyles' | 'initialMessage' | 'lastReceivedId' | 'message' | 'readBy';
export declare function defaultRenderMessages<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channelUnreadUiState, components, customClasses, lastReceivedMessageId: lastReceivedId, messageGroupStyles, messages, readData, sharedMessageProps: messageProps, }: RenderMessagesOptions<StreamChatGenerics>): React.JSX.Element[];
export {};