diff --git a/lib/shared/message-utils.js b/lib/shared/message-utils.js --- a/lib/shared/message-utils.js +++ b/lib/shared/message-utils.js @@ -11,6 +11,7 @@ import { threadIsGroupChat } from './thread-utils.js'; import { useStringForUser } from '../hooks/ens-cache.js'; import { contentStringForMediaArray } from '../media/media-utils.js'; +import type { ChatMessageInfoItem } from '../selectors/chat-selectors.js'; import { userIDsToRelativeUserInfos } from '../selectors/user-selectors.js'; import { type PlatformDetails, isWebPlatform } from '../types/device-types.js'; import type { Media } from '../types/media-types.js'; @@ -602,6 +603,27 @@ return pinnedContent; } +function modifyItemForResultScreen( + item: ChatMessageInfoItem, +): ChatMessageInfoItem { + if (item.messageInfoType === 'composable') { + return { + ...item, + startsConversation: false, + startsCluster: true, + endsCluster: true, + messageInfo: { + ...item.messageInfo, + creator: { + ...item.messageInfo.creator, + isViewer: false, + }, + }, + }; + } + return item; +} + export { localIDPrefix, messageKey, @@ -628,4 +650,5 @@ useMessagePreview, useMessageCreationSideEffectsFunc, getPinnedContentFromMessage, + modifyItemForResultScreen, }; diff --git a/web/modals/chat/message-results-modal.react.js b/web/modals/chat/message-results-modal.react.js --- a/web/modals/chat/message-results-modal.react.js +++ b/web/modals/chat/message-results-modal.react.js @@ -9,7 +9,10 @@ import { useModalContext } from 'lib/components/modal-provider.react.js'; import { messageListData } from 'lib/selectors/chat-selectors.js'; import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js'; -import { createMessageInfo } from 'lib/shared/message-utils.js'; +import { + createMessageInfo, + modifyItemForResultScreen, +} from 'lib/shared/message-utils.js'; import { type ThreadInfo } from 'lib/types/thread-types.js'; import { useServerCall, @@ -108,33 +111,8 @@ const modifiedItems = React.useMemo( () => sortedUniqueChatMessageInfoItems - .map(item => { - if (!item) { - return null; - } - - // We need to modify the item to make sure that the message does - // not render with the date header and that the creator - // is not considered the viewer. - let modifiedItem = item; - if (item.messageInfoType === 'composable') { - modifiedItem = { - ...item, - startsConversation: false, - startsCluster: true, - endsCluster: true, - messageInfo: { - ...item.messageInfo, - creator: { - ...item.messageInfo.creator, - isViewer: false, - }, - }, - }; - } - return modifiedItem; - }) - .filter(Boolean), + .filter(Boolean) + .map(item => modifyItemForResultScreen(item)), [sortedUniqueChatMessageInfoItems], ); diff --git a/web/modals/chat/toggle-pin-modal.react.js b/web/modals/chat/toggle-pin-modal.react.js --- a/web/modals/chat/toggle-pin-modal.react.js +++ b/web/modals/chat/toggle-pin-modal.react.js @@ -9,6 +9,7 @@ } from 'lib/actions/thread-actions.js'; import { useModalContext } from 'lib/components/modal-provider.react.js'; import type { ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; +import { modifyItemForResultScreen } from 'lib/shared/message-utils.js'; import type { ThreadInfo } from 'lib/types/thread-types.js'; import { useServerCall, @@ -64,19 +65,12 @@ return item; } - return { + const strippedItem = { ...item, threadCreatedFromMessage: undefined, reactions: {}, - startsConversation: false, - messageInfo: { - ...item.messageInfo, - creator: { - ...item.messageInfo.creator, - isViewer: false, - }, - }, }; + return modifyItemForResultScreen(strippedItem); }, [item]); const onClick = React.useCallback(() => {