diff --git a/native/chat/message-result.react.js b/native/chat/message-result.react.js --- a/native/chat/message-result.react.js +++ b/native/chat/message-result.react.js @@ -10,6 +10,7 @@ import type { ChatNavigationProp } from './chat.react'; import { MessageListContextProvider } from './message-list-types.js'; import { Message } from './message.react.js'; +import { modifyItemForResultScreen } from './utils.js'; import type { AppNavigationProp } from '../navigation/app-navigator.react'; import type { NavigationRoute } from '../navigation/route-names'; import { useStyles } from '../themes/colors.js'; @@ -33,12 +34,17 @@ const onToggleFocus = React.useCallback(() => {}, []); + const item = React.useMemo( + () => modifyItemForResultScreen(props.item), + [props.item], + ); + return ( - measuredMessages.map(item => { - invariant(item.itemType !== 'loader', 'should not be loader'); - invariant( - item.messageShapeType !== 'robotext', - 'should not be robotext', - ); - - if (item.messageShapeType === 'multimedia') { - return { - ...item, - startsConversation: false, - startsCluster: true, - endsCluster: true, - messageInfo: { - ...item.messageInfo, - creator: { - ...item.messageInfo.creator, - isViewer: false, - }, - }, - }; - } - - return { - ...item, - startsConversation: false, - startsCluster: true, - endsCluster: true, - messageInfo: { - ...item.messageInfo, - creator: { - ...item.messageInfo.creator, - isViewer: false, - }, - }, - }; - }), - [measuredMessages], - ); - const onLayout = React.useCallback(() => { scrollViewContainerRef.current?.measure( (x, y, width, height, pageX, pageY) => { @@ -177,17 +135,21 @@ const messageResultsToDisplay = React.useMemo( () => - modifiedItems.map(item => ( - - )), - [modifiedItems, threadInfo, navigation, route, messageVerticalBounds], + measuredMessages.map(item => { + invariant(item.itemType !== 'loader', 'should not be loader'); + + return ( + + ); + }), + [measuredMessages, threadInfo, navigation, route, messageVerticalBounds], ); return ( diff --git a/native/chat/toggle-pin-modal.react.js b/native/chat/toggle-pin-modal.react.js --- a/native/chat/toggle-pin-modal.react.js +++ b/native/chat/toggle-pin-modal.react.js @@ -65,45 +65,6 @@ }; }, [isPinned, styles.pinButton, styles.removePinButton]); - const modifiedItem = React.useMemo(() => { - // The if / else if / else conditional is for Flow - if (item.messageShapeType === 'robotext') { - return item; - } else if (item.messageShapeType === 'multimedia') { - return { - ...item, - threadCreatedFromMessage: undefined, - reactions: {}, - startsConversation: false, - startsCluster: true, - endsCluster: true, - messageInfo: { - ...item.messageInfo, - creator: { - ...item.messageInfo.creator, - isViewer: false, - }, - }, - }; - } else { - return { - ...item, - threadCreatedFromMessage: undefined, - reactions: {}, - startsConversation: false, - startsCluster: true, - endsCluster: true, - messageInfo: { - ...item.messageInfo, - creator: { - ...item.messageInfo.creator, - isViewer: false, - }, - }, - }; - } - }, [item]); - const createToggleMessagePinPromise = React.useCallback(async () => { invariant(messageInfo.id, 'messageInfo.id should be defined'); const result = await callToggleMessagePin({ @@ -136,7 +97,7 @@ {modalInfo.confirmationText}