Changeset View
Changeset View
Standalone View
Standalone View
lib/shared/message-utils.js
Show All 22 Lines | import { | ||||
type MultimediaMessageData, | type MultimediaMessageData, | ||||
type MessageStore, | type MessageStore, | ||||
type ComposableMessageInfo, | type ComposableMessageInfo, | ||||
messageTypes, | messageTypes, | ||||
messageTruncationStatus, | messageTruncationStatus, | ||||
type RawComposableMessageInfo, | type RawComposableMessageInfo, | ||||
type ThreadMessageInfo, | type ThreadMessageInfo, | ||||
} from '../types/message-types.js'; | } from '../types/message-types.js'; | ||||
import type { | |||||
EditMessageInfo, | |||||
RawEditMessageInfo, | |||||
} from '../types/messages/edit.js'; | |||||
import type { ImagesMessageData } from '../types/messages/images.js'; | import type { ImagesMessageData } from '../types/messages/images.js'; | ||||
import type { MediaMessageData } from '../types/messages/media.js'; | import type { MediaMessageData } from '../types/messages/media.js'; | ||||
import type { | import type { | ||||
RawReactionMessageInfo, | RawReactionMessageInfo, | ||||
ReactionMessageInfo, | ReactionMessageInfo, | ||||
} from '../types/messages/reaction.js'; | } from '../types/messages/reaction.js'; | ||||
import { type ThreadInfo } from '../types/thread-types.js'; | import { type ThreadInfo } from '../types/thread-types.js'; | ||||
import type { UserInfos } from '../types/user-types.js'; | import type { UserInfos } from '../types/user-types.js'; | ||||
▲ Show 20 Lines • Show All 269 Lines • ▼ Show 20 Lines | invariant( | ||||
result.type === messageTypes.MULTIMEDIA || | result.type === messageTypes.MULTIMEDIA || | ||||
result.type === messageTypes.IMAGES, | result.type === messageTypes.IMAGES, | ||||
`media messageSpec returned MessageType ${result.type}`, | `media messageSpec returned MessageType ${result.type}`, | ||||
); | ); | ||||
return result; | return result; | ||||
} | } | ||||
function stripLocalID( | function stripLocalID( | ||||
rawMessageInfo: RawComposableMessageInfo | RawReactionMessageInfo, | rawMessageInfo: | ||||
| RawComposableMessageInfo | |||||
| RawReactionMessageInfo | |||||
| RawEditMessageInfo, | |||||
) { | ) { | ||||
const { localID, ...rest } = rawMessageInfo; | const { localID, ...rest } = rawMessageInfo; | ||||
return rest; | return rest; | ||||
} | } | ||||
function stripLocalIDs( | function stripLocalIDs( | ||||
input: $ReadOnlyArray<RawMessageInfo>, | input: $ReadOnlyArray<RawMessageInfo>, | ||||
): RawMessageInfo[] { | ): RawMessageInfo[] { | ||||
Show All 37 Lines | ): ?string { | ||||
const thread = messageStore.threads[threadID]; | const thread = messageStore.threads[threadID]; | ||||
return thread?.messageIDs.find(id => !id.startsWith(localIDPrefix)); | return thread?.messageIDs.find(id => !id.startsWith(localIDPrefix)); | ||||
} | } | ||||
function getMessageTitle( | function getMessageTitle( | ||||
messageInfo: | messageInfo: | ||||
| ComposableMessageInfo | | ComposableMessageInfo | ||||
| RobotextMessageInfo | | RobotextMessageInfo | ||||
| ReactionMessageInfo, | | ReactionMessageInfo | ||||
| EditMessageInfo, | |||||
threadInfo: ThreadInfo, | threadInfo: ThreadInfo, | ||||
markdownRules: ParserRules, | markdownRules: ParserRules, | ||||
): EntityText { | ): EntityText { | ||||
const { messageTitle } = messageSpecs[messageInfo.type]; | const { messageTitle } = messageSpecs[messageInfo.type]; | ||||
if (messageTitle) { | if (messageTitle) { | ||||
return messageTitle({ messageInfo, threadInfo, markdownRules }); | return messageTitle({ messageInfo, threadInfo, markdownRules }); | ||||
} | } | ||||
invariant( | invariant( | ||||
messageInfo.type !== messageTypes.TEXT && | messageInfo.type !== messageTypes.TEXT && | ||||
messageInfo.type !== messageTypes.IMAGES && | messageInfo.type !== messageTypes.IMAGES && | ||||
messageInfo.type !== messageTypes.MULTIMEDIA && | messageInfo.type !== messageTypes.MULTIMEDIA && | ||||
messageInfo.type !== messageTypes.REACTION, | messageInfo.type !== messageTypes.REACTION && | ||||
messageInfo.type !== messageTypes.EDIT_MESSAGE, | |||||
'messageTitle can only be auto-generated for RobotextMessageInfo', | 'messageTitle can only be auto-generated for RobotextMessageInfo', | ||||
); | ); | ||||
return robotextForMessageInfo(messageInfo, threadInfo); | return robotextForMessageInfo(messageInfo, threadInfo); | ||||
} | } | ||||
function mergeThreadMessageInfos( | function mergeThreadMessageInfos( | ||||
first: ThreadMessageInfo, | first: ThreadMessageInfo, | ||||
second: ThreadMessageInfo, | second: ThreadMessageInfo, | ||||
▲ Show 20 Lines • Show All 187 Lines • Show Last 20 Lines |