@qte/react-native-gifted-chat
Version:
Performant fork of react-native-gifted-chat with FlashList support
60 lines (53 loc) • 1.77 kB
text/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 } }