diff --git a/lib/shared/chat-message-item-utils.js b/lib/shared/chat-message-item-utils.js --- a/lib/shared/chat-message-item-utils.js +++ b/lib/shared/chat-message-item-utils.js @@ -8,6 +8,7 @@ ComposableMessageInfo, } from '../types/message-types.js'; import type { ThreadInfo } from '../types/minimally-encoded-thread-permissions-types.js'; +import { longAbsoluteDate } from '../utils/date-utils.js'; type ChatMessageItemMessageInfo = ComposableMessageInfo | RobotextMessageInfo; @@ -35,6 +36,10 @@ return messageKey(item.messageInfo); } +function chatMessageInfoItemTimestamp(item: BaseChatMessageInfoItem): string { + return longAbsoluteDate(item.messageInfo.time); +} + type BaseChatMessageItemForEngagementCheck = { +threadCreatedFromMessage: ?ThreadInfo, +reactions: ReactionInfo, @@ -53,4 +58,8 @@ ); } -export { chatMessageItemKey, chatMessageItemHasEngagement }; +export { + chatMessageItemKey, + chatMessageInfoItemTimestamp, + chatMessageItemHasEngagement, +}; diff --git a/native/chat/message-header.react.js b/native/chat/message-header.react.js --- a/native/chat/message-header.react.js +++ b/native/chat/message-header.react.js @@ -23,7 +23,7 @@ function MessageHeader(props: Props): React.Node { const styles = useStyles(unboundStyles); const { item, focused, display } = props; - const { creator, time } = item.messageInfo; + const { creator } = item.messageInfo; const { isViewer } = creator; const route = useRoute(); @@ -84,14 +84,8 @@ return null; } - return ; - }, [ - display, - item.startsConversation, - messageInMessageList, - modalDisplay, - time, - ]); + return ; + }, [display, item, messageInMessageList, modalDisplay]); const containerStyle = React.useMemo(() => { if (!focused || modalDisplay) { 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 @@ -4,8 +4,8 @@ import { Text, View } from 'react-native'; import { ScrollView } from 'react-native-gesture-handler'; +import { chatMessageInfoItemTimestamp } from 'lib/shared/chat-message-item-utils.js'; import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { longAbsoluteDate } from 'lib/utils/date-utils.js'; import { type ChatNavigationProp } from './chat.react.js'; import { MessageListContextProvider } from './message-list-types.js'; @@ -64,7 +64,7 @@ shouldDisplayPinIndicator={false} /> - {longAbsoluteDate(props.item.messageInfo.time)} + {chatMessageInfoItemTimestamp(props.item)} diff --git a/native/chat/robotext-message-tooltip-button.react.js b/native/chat/robotext-message-tooltip-button.react.js --- a/native/chat/robotext-message-tooltip-button.react.js +++ b/native/chat/robotext-message-tooltip-button.react.js @@ -123,7 +123,7 @@ onInputBarMeasured={onInputBarMeasured} /> - + {reactionSelectionPopover} diff --git a/native/chat/robotext-message.react.js b/native/chat/robotext-message.react.js --- a/native/chat/robotext-message.react.js +++ b/native/chat/robotext-message.react.js @@ -58,9 +58,7 @@ let timestamp = null; if (focused || item.startsConversation) { - timestamp = ( - - ); + timestamp = ; } const styles = useStyles(unboundStyles); diff --git a/native/chat/timestamp.react.js b/native/chat/timestamp.react.js --- a/native/chat/timestamp.react.js +++ b/native/chat/timestamp.react.js @@ -2,15 +2,16 @@ import * as React from 'react'; -import { longAbsoluteDate } from 'lib/utils/date-utils.js'; +import { chatMessageInfoItemTimestamp } from 'lib/shared/chat-message-item-utils.js'; import SingleLine from '../components/single-line.react.js'; import { useStyles } from '../themes/colors.js'; +import type { ChatMessageInfoItemWithHeight } from '../types/chat-types.js'; export type DisplayType = 'lowContrast' | 'modal'; type Props = { - +time: number, + +item: ChatMessageInfoItemWithHeight, +display: DisplayType, }; function Timestamp(props: Props): React.Node { @@ -24,8 +25,8 @@ ); const absoluteDate = React.useMemo( - () => longAbsoluteDate(props.time), - [props.time], + () => chatMessageInfoItemTimestamp(props.item), + [props.item], ); const timestamp = React.useMemo( diff --git a/web/chat/message.react.js b/web/chat/message.react.js --- a/web/chat/message.react.js +++ b/web/chat/message.react.js @@ -4,9 +4,9 @@ import * as React from 'react'; import { type ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; +import { chatMessageInfoItemTimestamp } from 'lib/shared/chat-message-item-utils.js'; import { messageTypes } from 'lib/types/message-types-enum.js'; import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { longAbsoluteDate } from 'lib/utils/date-utils.js'; import css from './chat-message-list.css'; import { useEditModalContext } from './edit-message-provider.js'; @@ -27,7 +27,7 @@ if (item.startsConversation) { conversationHeader = (
- {longAbsoluteDate(item.messageInfo.time)} + {chatMessageInfoItemTimestamp(item)}
); } diff --git a/web/components/message-result.react.js b/web/components/message-result.react.js --- a/web/components/message-result.react.js +++ b/web/components/message-result.react.js @@ -6,8 +6,8 @@ import { useThreadChatMentionCandidates } from 'lib/hooks/chat-mention-hooks.js'; import { useStringForUser } from 'lib/hooks/ens-cache.js'; import type { ChatMessageInfoItem } from 'lib/selectors/chat-selectors.js'; +import { chatMessageInfoItemTimestamp } from 'lib/shared/chat-message-item-utils.js'; import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; -import { longAbsoluteDate } from 'lib/utils/date-utils.js'; import css from './message-result.css'; import { MessageListContext } from '../chat/message-list-types.js'; @@ -59,7 +59,7 @@
- {longAbsoluteDate(item.messageInfo.time)} + {chatMessageInfoItemTimestamp(item)}
diff --git a/web/tooltips/tooltip-action-utils.js b/web/tooltips/tooltip-action-utils.js --- a/web/tooltips/tooltip-action-utils.js +++ b/web/tooltips/tooltip-action-utils.js @@ -10,6 +10,7 @@ ChatMessageInfoItem, ReactionInfo, } from 'lib/selectors/chat-selectors.js'; +import { chatMessageInfoItemTimestamp } from 'lib/shared/chat-message-item-utils.js'; import { useCanEditMessage } from 'lib/shared/edit-messages-utils.js'; import { createMessageReply } from 'lib/shared/message-utils.js'; import { useCanCreateReactionFromMessage } from 'lib/shared/reaction-utils.js'; @@ -18,7 +19,6 @@ import { messageTypes } from 'lib/types/message-types-enum.js'; import type { ThreadInfo } from 'lib/types/minimally-encoded-thread-permissions-types.js'; import { threadPermissions } from 'lib/types/thread-permission-types.js'; -import { longAbsoluteDate } from 'lib/utils/date-utils.js'; import { useCanToggleMessagePin } from 'lib/utils/message-pinning-utils.js'; import LabelTooltip from './label-toolitp.react.js'; @@ -407,10 +407,7 @@ }: UseMessageTooltipArgs): UseTooltipResult { const tooltipActions = useMessageTooltipActions(item, threadInfo); - const messageTimestamp = React.useMemo(() => { - const time = item.messageInfo.time; - return longAbsoluteDate(time); - }, [item.messageInfo.time]); + const messageTimestamp = chatMessageInfoItemTimestamp(item); const tooltipSize = React.useMemo(() => { if (typeof document === 'undefined') {