From 1884410e0d877e793a138dc86e6ddc8a21c83de9 Mon Sep 17 00:00:00 2001 From: "Calum H." Date: Wed, 7 May 2025 22:37:35 +0100 Subject: [PATCH] fix: standardize relative timestamping (#3612) * fix(frontend): relative timestamps are incorrectly rounded. Closes: #1371 * fix(all): remove legacy fromNow for proper relative timestamp creation Closes: #1395 --- apps/app-frontend/src/App.vue | 13 +- .../src/components/ui/Instance.vue | 9 +- .../src/components/ui/friends/FriendsList.vue | 8 +- .../src/components/ui/world/InstanceItem.vue | 12 +- .../src/components/ui/world/WorldItem.vue | 12 +- .../src/components/ui/NotificationItem.vue | 7 +- .../src/components/ui/ProjectCard.vue | 8 +- .../src/components/ui/report/ReportInfo.vue | 5 +- .../ui/servers/notice/NoticeDashboardItem.vue | 6 +- .../components/ui/thread/ThreadMessage.vue | 2 +- apps/frontend/src/composables/date.js | 17 --- apps/frontend/src/composables/how-ago.ts | 18 --- apps/frontend/src/pages/[type]/[id].vue | 1 + .../frontend/src/pages/admin/billing/[id].vue | 16 +- .../src/pages/admin/servers/notices.vue | 7 +- apps/frontend/src/pages/collection/[id].vue | 1 + apps/frontend/src/pages/frog.vue | 2 + apps/frontend/src/pages/index.vue | 6 +- apps/frontend/src/pages/moderation/review.vue | 6 +- apps/frontend/src/pages/settings/pats.vue | 8 +- apps/frontend/src/pages/settings/sessions.vue | 2 +- apps/frontend/src/pages/user/[id].vue | 1 + packages/ui/index.ts | 7 +- packages/ui/package.json | 5 +- .../ui/src/components/base/ProjectCard.vue | 10 +- .../components/changelog/ChangelogEntry.vue | 4 +- .../src/components/project/NewProjectCard.vue | 7 +- .../project/ProjectPageVersions.vue | 5 +- .../project/ProjectSidebarDetails.vue | 10 +- packages/ui/src/composables/how-ago.ts | 23 +++ packages/ui/src/composables/index.ts | 1 + packages/ui/src/utils/index.ts | 4 + pnpm-lock.yaml | 140 ++++++++++-------- 33 files changed, 233 insertions(+), 150 deletions(-) delete mode 100644 apps/frontend/src/composables/date.js delete mode 100644 apps/frontend/src/composables/how-ago.ts create mode 100644 packages/ui/src/composables/how-ago.ts create mode 100644 packages/ui/src/composables/index.ts create mode 100644 packages/ui/src/utils/index.ts diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index 5ce8a76ea..760c8d47e 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -19,7 +19,14 @@ import { WorldIcon, XIcon, } from '@modrinth/assets' -import { Avatar, Button, ButtonStyled, Notifications, OverflowMenu } from '@modrinth/ui' +import { + Avatar, + Button, + ButtonStyled, + Notifications, + OverflowMenu, + useRelativeTime, +} from '@modrinth/ui' import { useLoading, useTheming } from '@/store/state' import ModrinthAppLogo from '@/assets/modrinth_app.svg?component' import AccountsCard from '@/components/ui/AccountsCard.vue' @@ -62,6 +69,8 @@ import FriendsList from '@/components/ui/friends/FriendsList.vue' import { openUrl } from '@tauri-apps/plugin-opener' import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue' +const formatRelativeTime = useRelativeTime() + const themeStore = useTheming() const news = ref([]) @@ -590,7 +599,7 @@ function handleAuxClick(e) {

{{ item.summary }}

- {{ dayjs(item.date).fromNow() }} + {{ formatRelativeTime(dayjs(item.date).toISOString()) }}


unlisten())
- Played {{ dayjs(instance.last_played).fromNow() }} + + Played {{ formatRelativeTime(dayjs(instance.last_played).toISOString()) }} +
diff --git a/apps/app-frontend/src/components/ui/friends/FriendsList.vue b/apps/app-frontend/src/components/ui/friends/FriendsList.vue index c936489bc..095e4d1e9 100644 --- a/apps/app-frontend/src/components/ui/friends/FriendsList.vue +++ b/apps/app-frontend/src/components/ui/friends/FriendsList.vue @@ -1,5 +1,5 @@