diff --git a/frontend/src/ts/pages/friends.ts b/frontend/src/ts/pages/friends.ts
index d1c3a4be6..5ad5397dc 100644
--- a/frontend/src/ts/pages/friends.ts
+++ b/frontend/src/ts/pages/friends.ts
@@ -3,10 +3,10 @@ import * as Skeleton from "../utils/skeleton";
import { SimpleModal } from "../utils/simple-modal";
import Ape from "../ape";
import {
- FormatDurationOptions,
intervalToDuration,
format as dateFormat,
formatDuration,
+ DurationUnit,
} from "date-fns";
import * as Notifications from "../elements/notifications";
import { isSafeNumber } from "@monkeytype/util/numbers";
@@ -155,7 +155,7 @@ function buildFriendRow(entry: Friend): HTMLTableRowElement {
-
${formatAge(entry.addedAt, ["years", "days"])} |
+ ${formatAge(entry.addedAt, "short")} |
@@ -205,13 +205,32 @@ function buildFriendRow(entry: Friend): HTMLTableRowElement {
function formatAge(
timestamp: number | undefined,
- format: FormatDurationOptions["format"] = ["days", "hours", "minutes"]
+ format?: "short" | "full"
): string {
+ const units: Array = [
+ "years",
+ "months",
+ "days",
+ "hours",
+ "minutes",
+ ];
+
if (timestamp === undefined) return "";
- const formatted = formatDuration(
- intervalToDuration({ start: timestamp, end: Date.now() }),
- { format }
- );
+ let formatted = "";
+ const duration = intervalToDuration({ start: timestamp, end: Date.now() });
+
+ if (format === undefined || format === "full") {
+ formatted = formatDuration(duration, { format: units });
+ } else {
+ for (const unit of units) {
+ const value = duration[unit];
+ if (value !== undefined && value > 0) {
+ formatted = `${value} ${unit}`;
+ break;
+ }
+ }
+ }
+
return formatted !== "" ? formatted : "less then a minute";
}
|