UNPKG

react-native-ajora

Version:

The most complete AI agent UI for React Native

47 lines 1.81 kB
import React, { memo, useCallback } from "react"; import { View } from "react-native"; import isEqual from "lodash.isequal"; import Bubble from "../Bubble"; import { isSameUser } from "../utils"; import styles from "./styles"; import MessageActions from "../MessageActions"; export * from "./types"; let Message = (props) => { const { currentMessage, renderBubble, onMessageLayout, nextMessage, position, containerStyle, renderMessageActions, } = props; const renderBubbleComponent = useCallback(() => { const { /* eslint-disable @typescript-eslint/no-unused-vars */ containerStyle, onMessageLayout, /* eslint-enable @typescript-eslint/no-unused-vars */ ...rest } = props; if (renderBubble) return renderBubble(rest); return (<View> <Bubble {...rest}/> <MessageActions message={currentMessage} renderMessageActions={renderMessageActions} position={position}/> </View>); }, [props]); if (!currentMessage) return null; const sameUser = isSameUser(currentMessage, nextMessage); return (<View onLayout={onMessageLayout}> <View style={[ styles[position].container, { marginBottom: sameUser ? 2 : 10 }, containerStyle?.[position], ]}> {renderBubbleComponent()} </View> </View>); }; Message = memo(Message, (props, nextProps) => { const shouldUpdate = props.shouldUpdateMessage?.(props, nextProps) || !isEqual(props.currentMessage, nextProps.currentMessage) || !isEqual(props.previousMessage, nextProps.previousMessage) || !isEqual(props.nextMessage, nextProps.nextMessage); if (shouldUpdate) return false; return true; }); export default Message; //# sourceMappingURL=index.js.map