ADD time ago display to VideoCard component

This commit is contained in:
2025-07-09 23:52:45 +02:00
parent 87759c689a
commit b19fd50dfa
3 changed files with 53 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
import clsx from "clsx";
import { formatTime } from "../../utils/utils.ts";
import { formatTime, stringToDate, dateToTimeAgo } from "../../utils/utils.ts";
import { Link } from "react-router-dom";
import { useState } from "react";
@@ -8,6 +8,7 @@ type VideoCardProps = {
duration: number,
thumbnailPath: string | null,
videoPath: string,
createdAt: string,
className?: string
}
@@ -18,6 +19,7 @@ const VideoCard = ({
duration,
thumbnailPath,
videoPath,
createdAt,
className
}: VideoCardProps) => {
@@ -53,6 +55,10 @@ const VideoCard = ({
">
{formatTime(duration)}
</p>
<p>
{dateToTimeAgo(stringToDate(createdAt))}
</p>
</div>

View File

@@ -20,6 +20,7 @@ const MyClips = () => {
duration={clip.duration}
thumbnailPath={clip.thumbnailPath}
videoPath={clip.videoPath}
createdAt={clip.createdAt}
className={"w-40 m-5"}
/>
))}

View File

@@ -12,6 +12,50 @@ function formatTime(seconds: number): string {
}
}
export {
formatTime
function stringToDate(dateString: string): Date {
const validIso = dateString.substring(0, 23);
const date = new Date(validIso);
if (isNaN(date.getTime())) {
throw new Error("Invalid date string");
}
return date;
}
function dateToTimeAgo(date: Date): string {
const now = new Date();
const secondsAgo = Math.floor((now.getTime() - date.getTime()) / 1000);
if (secondsAgo < 60) {
return `${secondsAgo} seconds ago`;
} else if (secondsAgo < 3600) {
const minutes = Math.floor(secondsAgo / 60);
if (minutes === 1) {
return "1 minute ago";
}
return `${minutes} minutes ago`;
} else if (secondsAgo < 86400) {
const hours = Math.floor(secondsAgo / 3600);
if (hours === 1) {
return "1 hour ago";
}
return `${hours} hours ago`;
} else {
const days = Math.floor(secondsAgo / 86400);
if (days === 1) {
return "1 day ago";
}
return `${days} days ago`;
}
}
export {
formatTime,
stringToDate,
dateToTimeAgo
}