Skip to content

Commit 7cf42e6

Browse files
buildwithrickyAntoLC
authored andcommitted
🐛(frontend) fix doc timestamp display
Implemented the logic to show 'Just now' instead of '0 seconds ago' when the difference is under one second. Signed-off-by: buildwithricky <nwakezepatrick@gmail.com>
1 parent 9903bd7 commit 7cf42e6

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

src/frontend/apps/e2e/__tests__/app-impress/doc-search.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ test.describe('Document search', () => {
4545
const listSearch = page.getByRole('listbox').getByRole('group');
4646
const rowdoc = listSearch.getByRole('option').first();
4747
await expect(rowdoc.getByText('keyboard_return')).toBeVisible();
48-
await expect(rowdoc.getByText(/seconds? ago/)).toBeVisible();
48+
await expect(rowdoc.getByText(/just now/)).toBeVisible();
4949

5050
await expect(
5151
listSearch.getByRole('option').getByText(doc1Title),

src/frontend/apps/impress/src/features/docs/doc-management/components/SimpleDocItem.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { DateTime } from 'luxon';
21
import { useTranslation } from 'react-i18next';
32
import { css } from 'styled-components';
43

54
import { Box, Text } from '@/components';
65
import { useCunninghamTheme } from '@/cunningham';
6+
import { useDate } from '@/hooks/useDate';
77
import { useResponsiveStore } from '@/stores';
88

99
import ChildDocument from '../assets/child-document.svg';
@@ -38,6 +38,7 @@ export const SimpleDocItem = ({
3838
const { isDesktop } = useResponsiveStore();
3939
const { untitledDocument } = useTrans();
4040
const { isChild } = useDocUtils(doc);
41+
const { relativeDate } = useDate();
4142

4243
return (
4344
<Box
@@ -100,7 +101,7 @@ export const SimpleDocItem = ({
100101
aria-hidden="true"
101102
>
102103
<Text $size="xs" $variation="tertiary">
103-
{DateTime.fromISO(doc.updated_at).toRelative()}
104+
{relativeDate(doc.updated_at)}
104105
</Text>
105106
</Box>
106107
)}

src/frontend/apps/impress/src/features/docs/docs-grid/components/__tests__/DocsGridItemDate.test.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ describe('DocsGridItemDate', () => {
3131
});
3232

3333
[
34+
{
35+
updated_at: DateTime.now().minus({ seconds: 1 }).toISO(),
36+
rendered: 'just now',
37+
},
3438
{
3539
updated_at: DateTime.now().minus({ minutes: 1 }).toISO(),
3640
rendered: '1 minute ago',

src/frontend/apps/impress/src/hooks/useDate.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const formatDefault: DateTimeFormatOptions = {
1010
};
1111

1212
export const useDate = () => {
13-
const { i18n } = useTranslation();
13+
const { i18n, t } = useTranslation();
1414

1515
const formatDate = (
1616
date: string,
@@ -22,7 +22,19 @@ export const useDate = () => {
2222
};
2323

2424
const relativeDate = (date: string): string => {
25-
return DateTime.fromISO(date).setLocale(i18n.language).toRelative() || '';
25+
const dateToCompare = DateTime.fromISO(date);
26+
27+
if (!dateToCompare.isValid) {
28+
return '';
29+
}
30+
31+
const dateNow = DateTime.now();
32+
33+
const differenceInSeconds = dateNow.diff(dateToCompare).as('seconds');
34+
35+
return Math.abs(differenceInSeconds) >= 5
36+
? dateToCompare.toRelative({ base: dateNow, locale: i18n.language })
37+
: t('just now');
2638
};
2739

2840
const calculateDaysLeft = (date: string, daysLimit: number): number =>

0 commit comments

Comments
 (0)