diff --git a/src/modules/Channel/context/dux/__tests__/reducers.spec.js b/src/modules/Channel/context/dux/__tests__/reducers.spec.js index fb5684334c..5c77ccdc60 100644 --- a/src/modules/Channel/context/dux/__tests__/reducers.spec.js +++ b/src/modules/Channel/context/dux/__tests__/reducers.spec.js @@ -7,6 +7,12 @@ import * as actionTypes from '../actionTypes'; import reducers from '../reducers'; import initialState from '../initialState'; import { uuidv4 } from '../../../../../utils/uuid'; +import { useLocalization } from '../../../../../lib/LocalizationContext'; + +jest.mock('../../../../../lib/LocalizationContext', () => ({ + ...jest.requireActual('../../../../../lib/LocalizationContext'), + useLocalization: jest.fn(), +})); const getLastMessageOf = (messageList) => messageList[messageList.length - 1]; @@ -15,6 +21,16 @@ describe('Messages-Reducers', () => { ...initialState, currentGroupChannel: { url: generateMockChannel().currentGroupChannel.url }, }; + + beforeEach(() => { + jest.clearAllMocks(); + useLocalization.mockReturnValue({ + stringSet: { + DATE_FORMAT__UNREAD_SINCE: 'p MMM dd', + }, + }); + }); + it('should setloading true FETCH_INITIAL_MESSAGES_START', () => { const nextState = reducers(initialState, { type: actionTypes.FETCH_INITIAL_MESSAGES_START, diff --git a/src/modules/Channel/context/dux/reducers.ts b/src/modules/Channel/context/dux/reducers.ts index 8811c2b1a3..f1cd61b99e 100644 --- a/src/modules/Channel/context/dux/reducers.ts +++ b/src/modules/Channel/context/dux/reducers.ts @@ -17,6 +17,7 @@ import { isSendableMessage, } from '../../../../utils'; import { ChannelInitialStateType } from './initialState'; +import { useLocalization } from '../../../../lib/LocalizationContext'; const getOldestMessageTimeStamp = (messages: CoreMessageType[] = []) => { const oldestMessage = messages[0]; @@ -37,6 +38,8 @@ export default function channelReducer( state: ChannelInitialStateType, action: ChannelActionTypes, ): ChannelInitialStateType { + const { stringSet } = useLocalization(); + return match(action) .with({ type: channelActions.RESET_MESSAGES }, () => { return { @@ -268,7 +271,7 @@ export default function channelReducer( return { ...state, currentGroupChannel: channel, - unreadSince: state.unreadSince ?? format(new Date(), 'p MMM dd'), + unreadSince: state.unreadSince ?? format(new Date(), stringSet.DATE_FORMAT__UNREAD_SINCE), unreadSinceDate: state.unreadSinceDate ?? new Date(), allMessages: passUnsuccessfullMessages(state.allMessages, message), }; diff --git a/src/modules/Channel/context/utils.ts b/src/modules/Channel/context/utils.ts index fa368ddf5c..031f41dc4c 100644 --- a/src/modules/Channel/context/utils.ts +++ b/src/modules/Channel/context/utils.ts @@ -5,6 +5,7 @@ import format from 'date-fns/format'; import { CoreMessageType, SendableMessageType } from '../../../utils'; import { BaseMessage, SendingStatus } from '@sendbird/chat/message'; +import { useLocalization } from '../../../lib/LocalizationContext'; export const scrollToRenderedMessage = ( scrollRef: React.RefObject, @@ -115,7 +116,10 @@ export const mergeAndSortMessages = (oldMessages: BaseMessage[], newMessages: Ba return sortByCreatedAt(unique); }; -export const getMessageCreatedAt = (message: BaseMessage) => format(message.createdAt, 'p'); +export const getMessageCreatedAt = (message: BaseMessage) => { + const { stringSet } = useLocalization(); + return format(message.createdAt, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT); +}; export const passUnsuccessfullMessages = ( allMessages: (CoreMessageType | SendableMessageType)[], diff --git a/src/modules/GroupChannel/components/MessageList/__test__/getMessagePartsInfo.spec.js b/src/modules/GroupChannel/components/MessageList/__test__/getMessagePartsInfo.spec.js index 6bb382820e..90849893fb 100644 --- a/src/modules/GroupChannel/components/MessageList/__test__/getMessagePartsInfo.spec.js +++ b/src/modules/GroupChannel/components/MessageList/__test__/getMessagePartsInfo.spec.js @@ -1,5 +1,11 @@ +import { useLocalization } from "../../../../../lib/LocalizationContext"; import { getMessagePartsInfo } from "../getMessagePartsInfo"; +jest.mock('../../../../../lib/LocalizationContext', () => ({ + ...jest.requireActual('../../../../../lib/LocalizationContext'), + useLocalization: jest.fn(), +})); + const mockChannel = { isGroupChannel: () => true, getUnreadMemberCount: () => 0, @@ -40,6 +46,14 @@ const messageGroup3 = [1, 2, 3].map((n, i) => ({ })); describe('getMessagePartsInfo', () => { + beforeEach(() => { + jest.clearAllMocks(); + useLocalization.mockReturnValue({ + stringSet: { + DATE_FORMAT__MESSAGE_CREATED_AT: 'p', + }, + }); + }); it('should group messages that are sent at same time', () => { const defaultSetting = { allMessages: messageGroup1, diff --git a/src/modules/GroupChannelList/components/GroupChannelListItem/utils.ts b/src/modules/GroupChannelList/components/GroupChannelListItem/utils.ts index 263d6c77cd..721eef195a 100644 --- a/src/modules/GroupChannelList/components/GroupChannelListItem/utils.ts +++ b/src/modules/GroupChannelList/components/GroupChannelListItem/utils.ts @@ -29,15 +29,15 @@ export const getLastMessageCreatedAt = ({ channel, locale, stringSet = LabelStri return ''; } if (isToday(createdAt)) { - return format(createdAt, 'p', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__TODAY, optionalParam); } if (isYesterday(createdAt)) { return stringSet.MESSAGE_STATUS__YESTERDAY || 'Yesterday'; } if (isThisYear(createdAt)) { - return format(createdAt, 'MMM d', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__THIS_YEAR, optionalParam); } - return format(createdAt, 'yyyy/M/d', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__PREVIOUS_YEAR, optionalParam); }; export const getTotalMembers = (channel?: GroupChannel) => (channel?.memberCount ? channel.memberCount : 0); diff --git a/src/modules/OpenChannel/context/utils.ts b/src/modules/OpenChannel/context/utils.ts index 6ff8bd1473..0cf0935075 100644 --- a/src/modules/OpenChannel/context/utils.ts +++ b/src/modules/OpenChannel/context/utils.ts @@ -5,8 +5,12 @@ import format from 'date-fns/format'; import { Logger } from '../../../lib/SendbirdState'; import { SendableMessageType } from '../../../utils'; +import { useLocalization } from '../../../lib/LocalizationContext'; -export const getMessageCreatedAt = (message: SendableMessageType): string => format(message.createdAt, 'p'); +export const getMessageCreatedAt = (message: SendableMessageType): string => { + const { stringSet } = useLocalization(); + return format(message.createdAt, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT); +}; export const shouldFetchMore = (messageLength: number, maxMessages?: number): boolean => { if (typeof maxMessages !== 'number') { diff --git a/src/modules/Thread/components/ParentMessageInfo/index.tsx b/src/modules/Thread/components/ParentMessageInfo/index.tsx index f515dca8f3..3c40427855 100644 --- a/src/modules/Thread/components/ParentMessageInfo/index.tsx +++ b/src/modules/Thread/components/ParentMessageInfo/index.tsx @@ -47,7 +47,7 @@ export default function ParentMessageInfo({ const { stores, config } = useSendbirdStateContext(); const { isOnline, userMention, logger, groupChannel } = config; const userId = stores.userStore.user?.userId ?? ''; - const { dateLocale } = useLocalization(); + const { dateLocale, stringSet } = useLocalization(); const { currentChannel, parentMessage, @@ -301,7 +301,7 @@ export default function ParentMessageInfo({ type={LabelTypography.CAPTION_3} color={LabelColors.ONBACKGROUND_2} > - {format(parentMessage?.createdAt || 0, 'p', { locale: dateLocale })} + {format(parentMessage?.createdAt || 0, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT, { locale: dateLocale })} {/* message content body */} diff --git a/src/modules/Thread/components/ThreadList/ThreadListItemContent.tsx b/src/modules/Thread/components/ThreadList/ThreadListItemContent.tsx index 5a98ed9b36..236434edbd 100644 --- a/src/modules/Thread/components/ThreadList/ThreadListItemContent.tsx +++ b/src/modules/Thread/components/ThreadList/ThreadListItemContent.tsx @@ -98,7 +98,7 @@ export default function ThreadListItemContent(props: ThreadListItemContentProps) } = deleteNullish(props); const { isMobile } = useMediaQueryContext(); - const { dateLocale } = useLocalization(); + const { dateLocale, stringSet } = useLocalization(); const { config, eventHandlers } = useSendbirdStateContext?.() || {}; const { logger } = config; const onPressUserProfileHandler = eventHandlers?.reaction?.onPressUserProfile; @@ -272,7 +272,7 @@ export default function ThreadListItemContent(props: ThreadListItemContentProps) type={LabelTypography.CAPTION_3} color={LabelColors.ONBACKGROUND_2} > - {format(message?.createdAt || 0, 'p', { + {format(message?.createdAt || 0, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT, { locale: dateLocale, })} diff --git a/src/modules/Thread/context/utils.ts b/src/modules/Thread/context/utils.ts index 162b222097..f8b2f51dfd 100644 --- a/src/modules/Thread/context/utils.ts +++ b/src/modules/Thread/context/utils.ts @@ -2,6 +2,7 @@ import format from 'date-fns/format'; import { GroupChannel, Member } from '@sendbird/chat/groupChannel'; import { getOutgoingMessageState, OutgoingMessageStates } from '../../../utils/exports/getOutgoingMessageState'; import { SendableMessageType } from '../../../utils'; +import { useLocalization } from '../../../lib/LocalizationContext'; export const getNicknamesMapFromMembers = (members: Member[] = []): Map => { const nicknamesMap = new Map(); @@ -57,7 +58,10 @@ export function compareIds(a: number | string, b: number | string): boolean { return aString === bString; } -export const getMessageCreatedAt = (message: SendableMessageType): string => format(message.createdAt, 'p'); +export const getMessageCreatedAt = (message: SendableMessageType): string => { + const { stringSet } = useLocalization(); + return format(message.createdAt, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT); +}; export const isReadMessage = (channel: GroupChannel, message: SendableMessageType): boolean => ( getOutgoingMessageState(channel, message) === OutgoingMessageStates.READ ); diff --git a/src/ui/Label/stringSet.ts b/src/ui/Label/stringSet.ts index d2311cbabf..f099849aa0 100644 --- a/src/ui/Label/stringSet.ts +++ b/src/ui/Label/stringSet.ts @@ -217,6 +217,11 @@ const stringSet = { DATE_FORMAT__MESSAGE_LIST__NOTIFICATION__UNREAD_SINCE: 'p \'on\' MMM dd', DATE_FORMAT__MESSAGE_LIST__DATE_SEPARATOR: 'MMMM dd, yyyy', DATE_FORMAT__THREAD_LIST__DATE_SEPARATOR: 'MMM dd, yyyy', + DATE_FORMAT__MESSAGE_CREATED_AT: 'p', + DATE_FORMAT__UNREAD_SINCE: 'p MMM dd', + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__TODAY: 'p', + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__THIS_YEAR: 'MMM d', + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__PREVIOUS_YEAR: 'yyyy/M/d', // File upload FILE_UPLOAD_NOTIFICATION__COUNT_LIMIT: 'Up to %d files can be attached.', FILE_UPLOAD_NOTIFICATION__SIZE_LIMIT: 'The maximum size per file is %d MB.', diff --git a/src/ui/MessageContent/__tests__/MessageContent.spec.js b/src/ui/MessageContent/__tests__/MessageContent.spec.js index 00d3d2970f..8cd3cbf1e1 100644 --- a/src/ui/MessageContent/__tests__/MessageContent.spec.js +++ b/src/ui/MessageContent/__tests__/MessageContent.spec.js @@ -71,6 +71,9 @@ describe('ui/MessageContent', () => { }; const localeContextValue = { dateLocale: {}, + stringSet: { + DATE_FORMAT__MESSAGE_CREATED_AT: 'p', + }, }; const messageContextValue = { message: {}, diff --git a/src/ui/MessageContent/index.tsx b/src/ui/MessageContent/index.tsx index d63be80d36..db9e338f3a 100644 --- a/src/ui/MessageContent/index.tsx +++ b/src/ui/MessageContent/index.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement, ReactNode, useContext, useMemo, useRef, useState } from 'react'; +import React, { ReactElement, ReactNode, useMemo, useRef, useState } from 'react'; import format from 'date-fns/format'; import './index.scss'; @@ -25,7 +25,7 @@ import { SendableMessageType, UI_CONTAINER_TYPES, } from '../../utils'; -import { LocalizationContext, useLocalization } from '../../lib/LocalizationContext'; +import { useLocalization } from '../../lib/LocalizationContext'; import useSendbirdStateContext from '../../hooks/useSendbirdStateContext'; import { GroupChannel } from '@sendbird/chat/groupChannel'; import { type EmojiCategory, EmojiContainer } from '@sendbird/chat'; @@ -137,7 +137,7 @@ export function MessageContent(props: MessageContentProps): ReactElement { renderMobileMenuOnLongPress = (props: MobileBottomSheetProps) => , } = deleteNullish(props); - const { dateLocale } = useLocalization(); + const { dateLocale, stringSet } = useLocalization(); const { config, eventHandlers } = useSendbirdStateContext(); const { logger } = config; const onPressUserProfileHandler = eventHandlers?.reaction?.onPressUserProfile; @@ -176,8 +176,6 @@ export function MessageContent(props: MessageContentProps): ReactElement { } }; - const { stringSet } = useContext(LocalizationContext); - const isByMe = (userId === (message as SendableMessageType)?.sender?.userId) || ((message as SendableMessageType)?.sendingStatus === 'pending') || ((message as SendableMessageType)?.sendingStatus === 'failed'); @@ -448,7 +446,7 @@ export function MessageContent(props: MessageContentProps): ReactElement { color={LabelColors.ONBACKGROUND_2} ref={timestampRef} > - {format(message?.createdAt || 0, 'p', { + {format(message?.createdAt || 0, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT, { locale: dateLocale, })} diff --git a/src/ui/MessageSearchFileItem/__tests__/MessageSearchFileItem.spec.js b/src/ui/MessageSearchFileItem/__tests__/MessageSearchFileItem.spec.js index 3c103db9ff..8dd6d74cb7 100644 --- a/src/ui/MessageSearchFileItem/__tests__/MessageSearchFileItem.spec.js +++ b/src/ui/MessageSearchFileItem/__tests__/MessageSearchFileItem.spec.js @@ -14,6 +14,13 @@ import { getCreatedAt } from '../utils'; jest.useFakeTimers(); jest.setSystemTime(new Date('January 23, 2022 17:17:52')); +const stringSet = { + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__TODAY: 'p', + MESSAGE_STATUS__YESTERDAY: 'Yesterday', + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__THIS_YEAR: 'MMM d', + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__PREVIOUS_YEAR: 'yyyy/M/dd', +}; + describe('ui/MessageSearchFileItem', () => { // should add test cases for each file types // define id for each icon svg files first @@ -34,7 +41,7 @@ describe('ui/MessageSearchFileItem', () => { const nowTime = new Date(Date.now()); const isPM = nowTime?.getHours() > 12; expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe(`${nowTime?.getHours() - (isPM ? 12 : 0)}:${nowTime?.getMinutes()} ${isPM ? 'PM' : 'AM'}`); }); @@ -42,7 +49,7 @@ describe('ui/MessageSearchFileItem', () => { const nowTime = new Date(Date.now()); nowTime.setDate(nowTime.getDate() - 1); expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe("Yesterday"); }) @@ -51,10 +58,10 @@ describe('ui/MessageSearchFileItem', () => { nowTime.setDate(nowTime.getDate() - 2); const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe(`${months[nowTime?.getMonth()]} ${nowTime?.getDate()}`); expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe('Jan 21'); }); @@ -62,10 +69,10 @@ describe('ui/MessageSearchFileItem', () => { const nowTime = new Date(Date.now()); nowTime.setFullYear(nowTime.getFullYear() - 1); expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe(`${nowTime?.getFullYear()}/${nowTime?.getMonth() + 1}/${nowTime?.getDate()}`); expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe('2021/1/23'); }); }); diff --git a/src/ui/MessageSearchFileItem/utils.ts b/src/ui/MessageSearchFileItem/utils.ts index ecc5161231..ae3dec6516 100644 --- a/src/ui/MessageSearchFileItem/utils.ts +++ b/src/ui/MessageSearchFileItem/utils.ts @@ -13,7 +13,7 @@ import { Types } from '../Icon/type'; export interface GetCreatedAtProps { createdAt: number; locale?: Locale; - stringSet?: Record; + stringSet: Record; } export function getCreatedAt({ createdAt, locale, stringSet }: GetCreatedAtProps): string { @@ -22,15 +22,15 @@ export function getCreatedAt({ createdAt, locale, stringSet }: GetCreatedAtProps return ''; } if (isToday(createdAt)) { - return format(createdAt, 'p', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__TODAY, optionalParam); } if (isYesterday(createdAt)) { - return stringSet?.MESSAGE_STATUS__YESTERDAY || 'Yesterday'; + return stringSet.MESSAGE_STATUS__YESTERDAY; } if (isThisYear(createdAt)) { - return format(createdAt, 'MMM d', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__THIS_YEAR, optionalParam); } - return format(createdAt, 'yyyy/M/d', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__PREVIOUS_YEAR, optionalParam); } export function getIconOfFileType(message: FileMessage | MultipleFilesMessage): Types { diff --git a/src/ui/MessageSearchItem/__tests__/MessageSearchItem.spec.js b/src/ui/MessageSearchItem/__tests__/MessageSearchItem.spec.js index 2a46deb249..28a1a54281 100644 --- a/src/ui/MessageSearchItem/__tests__/MessageSearchItem.spec.js +++ b/src/ui/MessageSearchItem/__tests__/MessageSearchItem.spec.js @@ -8,6 +8,13 @@ import { generateNormalMessage } from '../messageDummyDate.mock'; jest.useFakeTimers(); jest.setSystemTime(new Date('January 23, 2022 17:17:52')); +const stringSet = { + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__TODAY: 'p', + MESSAGE_STATUS__YESTERDAY: 'Yesterday', + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__THIS_YEAR: 'MMM d', + DATE_FORMAT__LAST_MESSAGE_CREATED_AT__PREVIOUS_YEAR: 'yyyy/M/dd', +}; + describe('ui/MessageSearchItem', () => { it('should render necessary elements', function () { const className = 'class-name'; @@ -49,7 +56,7 @@ describe('ui/MessageSearchItem', () => { const nowTime = new Date(Date.now()); const isPM = nowTime?.getHours() > 12; expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe(`${nowTime?.getHours() - (isPM ? 12 : 0)}:${nowTime?.getMinutes()} ${isPM ? 'PM' : 'AM'}`); }); @@ -57,7 +64,7 @@ describe('ui/MessageSearchItem', () => { const nowTime = new Date(Date.now()); nowTime.setDate(nowTime.getDate() - 1); expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe("Yesterday"); }) @@ -66,10 +73,10 @@ describe('ui/MessageSearchItem', () => { nowTime.setDate(nowTime.getDate() - 2); const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe(`${months[nowTime?.getMonth()]} ${nowTime?.getDate()}`); expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe('Jan 21'); }); @@ -77,10 +84,10 @@ describe('ui/MessageSearchItem', () => { const nowTime = new Date(Date.now()); nowTime.setFullYear(nowTime.getFullYear() - 1); expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe(`${nowTime?.getFullYear()}/${nowTime?.getMonth() + 1}/${nowTime?.getDate()}`); expect( - getCreatedAt({ createdAt: nowTime }) + getCreatedAt({ createdAt: nowTime, stringSet }) ).toBe('2021/1/23'); }); }); diff --git a/src/ui/MessageSearchItem/getCreatedAt.ts b/src/ui/MessageSearchItem/getCreatedAt.ts index ab2911d8c1..461b0ccde3 100644 --- a/src/ui/MessageSearchItem/getCreatedAt.ts +++ b/src/ui/MessageSearchItem/getCreatedAt.ts @@ -7,7 +7,7 @@ import isYesterday from 'date-fns/isYesterday'; interface GetCreatedAtProps { createdAt: number; locale?: Locale; - stringSet?: Record; + stringSet: Record; } // getCreatedAt @@ -21,13 +21,13 @@ export default function ({ return ''; } if (isToday(createdAt)) { - return format(createdAt, 'p', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__TODAY, optionalParam); } if (isYesterday(createdAt)) { - return stringSet?.MESSAGE_STATUS__YESTERDAY || 'Yesterday'; + return stringSet.MESSAGE_STATUS__YESTERDAY; } if (isThisYear(createdAt)) { - return format(createdAt, 'MMM d', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__THIS_YEAR, optionalParam); } - return format(createdAt, 'yyyy/M/d', optionalParam); + return format(createdAt, stringSet.DATE_FORMAT__LAST_MESSAGE_CREATED_AT__PREVIOUS_YEAR, optionalParam); } diff --git a/src/ui/MessageStatus/index.tsx b/src/ui/MessageStatus/index.tsx index 67f1733591..78679f3695 100644 --- a/src/ui/MessageStatus/index.tsx +++ b/src/ui/MessageStatus/index.tsx @@ -94,7 +94,7 @@ export default function MessageStatus({ > { isDateSeparatorConsidered - ? format(message?.createdAt || 0, 'p', { locale: dateLocale }) + ? format(message?.createdAt || 0, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT, { locale: dateLocale }) : getLastMessageCreatedAt({ channel, locale: dateLocale, stringSet }) } diff --git a/src/ui/OpenchannelFileMessage/index.tsx b/src/ui/OpenchannelFileMessage/index.tsx index 3a6a8a5867..fcca9b6437 100644 --- a/src/ui/OpenchannelFileMessage/index.tsx +++ b/src/ui/OpenchannelFileMessage/index.tsx @@ -154,7 +154,7 @@ export default function OpenChannelFileMessage({ > { message?.createdAt && ( - format(message.createdAt, 'p', { + format(message.createdAt, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT, { locale: dateLocale, }) ) diff --git a/src/ui/OpenchannelOGMessage/index.tsx b/src/ui/OpenchannelOGMessage/index.tsx index c3f167cbbd..23b8028bd0 100644 --- a/src/ui/OpenchannelOGMessage/index.tsx +++ b/src/ui/OpenchannelOGMessage/index.tsx @@ -191,7 +191,7 @@ export default function OpenChannelOGMessage({ > { message?.createdAt && ( - format(message?.createdAt, 'p', { + format(message?.createdAt, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT, { locale: dateLocale, }) ) diff --git a/src/ui/OpenchannelThumbnailMessage/index.tsx b/src/ui/OpenchannelThumbnailMessage/index.tsx index 4f273d8a2c..e542d73292 100644 --- a/src/ui/OpenchannelThumbnailMessage/index.tsx +++ b/src/ui/OpenchannelThumbnailMessage/index.tsx @@ -184,7 +184,7 @@ export default function OpenchannelThumbnailMessage({ > { message?.createdAt && ( - format(message.createdAt, 'p', { + format(message.createdAt, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT, { locale: dateLocale, }) ) diff --git a/src/ui/OpenchannelUserMessage/index.tsx b/src/ui/OpenchannelUserMessage/index.tsx index 42769d906f..77b9a62992 100644 --- a/src/ui/OpenchannelUserMessage/index.tsx +++ b/src/ui/OpenchannelUserMessage/index.tsx @@ -177,7 +177,7 @@ export default function OpenchannelUserMessage({ > { message?.createdAt && ( - format(message?.createdAt, 'p', { + format(message?.createdAt, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT, { locale: dateLocale, }) ) diff --git a/src/utils/messages.ts b/src/utils/messages.ts index 29274dd4ca..d4f0e121fb 100644 --- a/src/utils/messages.ts +++ b/src/utils/messages.ts @@ -5,6 +5,7 @@ import format from 'date-fns/format'; import { ReplyType } from '../types'; import type { CoreMessageType } from '.'; import { isReadMessage } from '.'; +import { useLocalization } from '../lib/LocalizationContext'; /** * exported, should be backward compatible @@ -35,7 +36,10 @@ export const compareMessagesForGrouping = ( ]; }; -export const getMessageCreatedAt = (message: BaseMessage) => format(message.createdAt, 'p'); +export const getMessageCreatedAt = (message: BaseMessage) => { + const { stringSet } = useLocalization(); + return format(message.createdAt, stringSet.DATE_FORMAT__MESSAGE_CREATED_AT); +}; export const isSameGroup = ( message: CoreMessageType,