@qte/react-native-gifted-chat
Version:
Performant fork of react-native-gifted-chat with FlashList support
53 lines (52 loc) • 1.89 kB
TypeScript
import React, { RefObject } from 'react';
import { LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent, StyleProp, ViewStyle } from 'react-native';
import { FlashListProps, FlashListRef } from '@shopify/flash-list';
import { LoadEarlierProps } from '../LoadEarlier';
import { MessageProps } from '../Message';
import { User, IMessage, Reply } from '../types';
export type ListViewProps = {
onLayout?: (event: LayoutChangeEvent) => void;
} & Omit<FlashListProps<unknown>, 'data' | 'renderItem' | 'keyExtractor'>;
export interface MessageContainerProps<TMessage extends IMessage> {
forwardRef?: RefObject<FlashListRef<TMessage> | null>;
messages?: TMessage[];
isTyping?: boolean;
user?: User;
listViewProps?: ListViewProps;
inverted?: boolean;
loadEarlier?: boolean;
alignTop?: boolean;
isScrollToBottomEnabled?: boolean;
scrollToBottomStyle?: StyleProp<ViewStyle>;
invertibleScrollViewProps?: object;
extraData?: object;
scrollToBottomOffset?: number;
renderChatEmpty?(): React.ReactNode;
renderFooter?(props: MessageContainerProps<TMessage>): React.ReactNode;
renderMessage?(props: MessageProps<TMessage>): React.ReactElement;
renderLoadEarlier?(props: LoadEarlierProps): React.ReactNode;
renderTypingIndicator?(): React.ReactNode;
scrollToBottomComponent?(): React.ReactNode;
onLoadEarlier?(): void;
onQuickReply?(replies: Reply[]): void;
infiniteScroll?: boolean;
isLoadingEarlier?: boolean;
handleOnScroll?(event: NativeSyntheticEvent<NativeScrollEvent>): void;
dayAnimated?: boolean;
}
export interface State {
showScrollBottom: boolean;
hasScrolled: boolean;
}
interface ViewLayout {
x: number;
y: number;
width: number;
height: number;
}
export type DaysPositions = {
[key: string]: ViewLayout & {
createdAt: number;
};
};
export {};