Changeset View
Changeset View
Standalone View
Standalone View
lib/shared/message-utils.js
// @flow | // @flow | ||||
import invariant from 'invariant'; | import invariant from 'invariant'; | ||||
import _maxBy from 'lodash/fp/maxBy.js'; | import _maxBy from 'lodash/fp/maxBy.js'; | ||||
import _orderBy from 'lodash/fp/orderBy.js'; | import _orderBy from 'lodash/fp/orderBy.js'; | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { codeBlockRegex, type ParserRules } from './markdown.js'; | import { codeBlockRegex, type ParserRules } from './markdown.js'; | ||||
import type { CreationSideEffectsFunc } from './messages/message-spec.js'; | import type { CreationSideEffectsFunc } from './messages/message-spec.js'; | ||||
import { messageSpecs } from './messages/message-specs.js'; | import { messageSpecs } from './messages/message-specs.js'; | ||||
import { threadIsGroupChat } from './thread-utils.js'; | import { threadIsGroupChat } from './thread-utils.js'; | ||||
import { useStringForUser } from '../hooks/ens-cache.js'; | import { useStringForUser } from '../hooks/ens-cache.js'; | ||||
import { contentStringForMediaArray } from '../media/media-utils.js'; | |||||
import { userIDsToRelativeUserInfos } from '../selectors/user-selectors.js'; | import { userIDsToRelativeUserInfos } from '../selectors/user-selectors.js'; | ||||
import { type PlatformDetails, isWebPlatform } from '../types/device-types.js'; | import { type PlatformDetails, isWebPlatform } from '../types/device-types.js'; | ||||
import type { Media } from '../types/media-types.js'; | import type { Media } from '../types/media-types.js'; | ||||
import { | import { | ||||
type MessageInfo, | type MessageInfo, | ||||
type RawMessageInfo, | type RawMessageInfo, | ||||
type RobotextMessageInfo, | type RobotextMessageInfo, | ||||
type RawMultimediaMessageInfo, | type RawMultimediaMessageInfo, | ||||
▲ Show 20 Lines • Show All 543 Lines • ▼ Show 20 Lines | ): CreationSideEffectsFunc<Info> { | ||||
invariant(messageSpec, `we're not aware of messageType ${messageType}`); | invariant(messageSpec, `we're not aware of messageType ${messageType}`); | ||||
invariant( | invariant( | ||||
messageSpec.useCreationSideEffectsFunc, | messageSpec.useCreationSideEffectsFunc, | ||||
`no useCreationSideEffectsFunc in message spec for ${messageType}`, | `no useCreationSideEffectsFunc in message spec for ${messageType}`, | ||||
); | ); | ||||
return messageSpec.useCreationSideEffectsFunc(); | return messageSpec.useCreationSideEffectsFunc(); | ||||
} | } | ||||
function getPinnedContentFromMessage(targetMessage: RawMessageInfo): string { | |||||
let pinnedContent; | |||||
if ( | |||||
targetMessage.type === messageTypes.IMAGES || | |||||
targetMessage.type === messageTypes.MULTIMEDIA | |||||
) { | |||||
pinnedContent = contentStringForMediaArray(targetMessage.media); | |||||
} else { | |||||
pinnedContent = 'a message'; | |||||
} | |||||
return pinnedContent; | |||||
} | |||||
export { | export { | ||||
localIDPrefix, | localIDPrefix, | ||||
messageKey, | messageKey, | ||||
messageID, | messageID, | ||||
robotextForMessageInfo, | robotextForMessageInfo, | ||||
createMessageInfo, | createMessageInfo, | ||||
sortMessageInfoList, | sortMessageInfoList, | ||||
sortMessageIDs, | sortMessageIDs, | ||||
rawMessageInfoFromMessageData, | rawMessageInfoFromMessageData, | ||||
mostRecentMessageTimestamp, | mostRecentMessageTimestamp, | ||||
usersInMessageInfos, | usersInMessageInfos, | ||||
combineTruncationStatuses, | combineTruncationStatuses, | ||||
shimUnsupportedRawMessageInfos, | shimUnsupportedRawMessageInfos, | ||||
createMediaMessageData, | createMediaMessageData, | ||||
createMediaMessageInfo, | createMediaMessageInfo, | ||||
stripLocalIDs, | stripLocalIDs, | ||||
trimMessage, | trimMessage, | ||||
createMessageQuote, | createMessageQuote, | ||||
createMessageReply, | createMessageReply, | ||||
getMostRecentNonLocalMessageID, | getMostRecentNonLocalMessageID, | ||||
getMessageTitle, | getMessageTitle, | ||||
mergeThreadMessageInfos, | mergeThreadMessageInfos, | ||||
useMessagePreview, | useMessagePreview, | ||||
useMessageCreationSideEffectsFunc, | useMessageCreationSideEffectsFunc, | ||||
getPinnedContentFromMessage, | |||||
}; | }; |