From a974a6218f8a0ae4479d706dee706c1afde02a82 Mon Sep 17 00:00:00 2001 From: Aminejv Date: Wed, 14 Jul 2021 13:27:38 +0100 Subject: [PATCH] feat(Activity): change how we format date in ProfileInfo --- common/utilities.js | 27 +++++++++++++------ .../components/ActivityCollectionGroup.js | 4 +-- .../components/ActivityFileGroup.js | 4 +-- .../components/ActivityProfileGroup.js | 5 +--- .../ActivityGroup/components/ProfileInfo.js | 13 ++++++++- 5 files changed, 34 insertions(+), 19 deletions(-) diff --git a/common/utilities.js b/common/utilities.js index 0882f0c0..03351cba 100644 --- a/common/utilities.js +++ b/common/utilities.js @@ -86,39 +86,50 @@ export const coerceToArray = (input) => { export const getFileExtension = (filename) => filename?.split(".").pop(); -export const getTimeDifferenceFromNow = (date) => { +export const getTimeDifferenceFromNow = (date, format = {}) => { + const defaultFormats = { + seconds: (time) => time + "s", + minutes: (time) => time + "m", + hours: (time) => time + "h", + days: (time) => time + "d", + currentYear: (month, day) => `${month} ${day}`, + default: (month, day, year) => `${month} ${day}, ${year}`, + }; + + const formatDate = { ...defaultFormats, ...format }; + const pastDate = new Date(date); const now = new Date(); const differenceInSeconds = Math.floor((now - pastDate) / 1000); if (differenceInSeconds < 60) { - return differenceInSeconds + "s"; + return formatDate.seconds(differenceInSeconds); } const differenceInMinutes = Math.floor(differenceInSeconds / 60); if (differenceInMinutes < 60) { - return differenceInMinutes + "m"; + return formatDate.minutes(differenceInMinutes); } const differenceInHours = Math.floor(differenceInMinutes / 60); if (differenceInHours < 24) { - return differenceInHours + "h"; + return formatDate.hours(differenceInHours); } const differenceInDays = Math.floor(differenceInHours / 24); if (differenceInDays < 24) { - return differenceInDays + "d"; + return formatDate.days(differenceInDays); } const currentYear = now.getFullYear(); const day = pastDate.getDay(); - const month = pastDate.toLocaleString("default", { month: "long" }); + const month = pastDate.toLocaleString("default", { month: "short" }); const year = pastDate.getFullYear(); if (year === currentYear) { - return `${day} ${month}`; + return formatDate.currentYear(month, day); } - return `${day} ${month} ${year}`; + return formatDate.default(month, day, year); }; diff --git a/components/core/ActivityGroup/components/ActivityCollectionGroup.js b/components/core/ActivityGroup/components/ActivityCollectionGroup.js index ac0c8c2d..4bbb070e 100644 --- a/components/core/ActivityGroup/components/ActivityCollectionGroup.js +++ b/components/core/ActivityGroup/components/ActivityCollectionGroup.js @@ -1,7 +1,6 @@ import * as React from "react"; import * as Styles from "~/common/styles"; import * as Strings from "~/common/strings"; -import * as Utilities from "~/common/utilities"; import { css } from "@emotion/react"; import { Link } from "~/components/core/Link"; @@ -50,7 +49,6 @@ export default function ActivityCollectionGroup({ const [showMore, setShowMore] = React.useState(false); const viewMoreFiles = () => setShowMore(true); - const timeSinceUploaded = Utilities.getTimeDifferenceFromNow(createdAt); // const timeSinceUploaded = Utilities.getTimeDifferenceFromNow(elements[0].createdAt); const nbrOfFilesUploaded = elements.length + (restElements?.length || 0); const action = React.useMemo(() => { @@ -63,7 +61,7 @@ export default function ActivityCollectionGroup({ return (
setShowMore(true); - const timeSinceAction = Utilities.getTimeDifferenceFromNow(createdAt); const nbrOfFiles = elements.length + (restElements?.length || 0); const action = React.useMemo(() => { if (type === "CREATE_FILE") @@ -64,7 +62,7 @@ export default function ActivityFileGroup({ viewer, group, onAction, nbrOfObject return (
setShowMore(true); - const timeSinceUploaded = Utilities.getTimeDifferenceFromNow(createdAt); - return (
`${time} ${Strings.pluralize("second", time)} ago`, + minutes: (time) => `${time} ${Strings.pluralize("minute", time)} ago`, + hours: (time) => `${time} ${Strings.pluralize("hour", time)} ago`, + days: (time) => `${time} ${Strings.pluralize("day", time)} ago`, + }); + const isOwner = viewer?.id === owner.id; return ( @@ -61,7 +71,8 @@ export default function ProfileInfo({ owner, viewer, time, action, onAction }) {  •  - {time} + {formattedDate} + {mobileFormattedDate}