mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
* docs: transient docs * chore: cleanup * webvtt WIP * webvtt field * chore: webvtt tests comments * chore: remove useless tests * feat: search TASK.md * feat: full text search by title/webvtt * chore: search api task * feat: search api * feat: search API * chore: rm task md * chore: roll back unnecessary validators * chore: pr review WIP * chore: pr review WIP * chore: pr review * chore: top imports * feat: better lint + ci * feat: better lint + ci * feat: better lint + ci * feat: better lint + ci * chore: lint * chore: lint * fix: db datetime definitions * fix: flush() params * fix: update transcript mutability expectation / test * fix: update transcript mutability expectation / test * chore: auto review * chore: new controller extraction * chore: new controller extraction * chore: cleanup * chore: review WIP * chore: pr WIP * chore: remove ci lint * chore: openapi regeneration * chore: openapi regeneration * chore: postgres test doc * fix: .dockerignore for arm binaries * fix: .dockerignore for arm binaries * fix: cap test loops * fix: cap test loops * fix: cap test loops * fix: get_transcript_topics * chore: remove flow.md docs and claude guidance * chore: remove claude.md db doc * chore: remove claude.md db doc * chore: remove claude.md db doc * chore: remove claude.md db doc
57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
export const formatTimeMs = (milliseconds: number): string => {
|
|
return formatTime(Math.floor(milliseconds / 1000));
|
|
};
|
|
|
|
export const formatTime = (seconds: number): string => {
|
|
let hours = Math.floor(seconds / 3600);
|
|
let minutes = Math.floor((seconds % 3600) / 60);
|
|
let secs = Math.floor(seconds % 60);
|
|
|
|
let timeString = `${hours > 0 ? hours + ":" : ""}${minutes
|
|
.toString()
|
|
.padStart(2, "0")}:${secs.toString().padStart(2, "0")}`;
|
|
|
|
return timeString;
|
|
};
|
|
|
|
export const formatTimeDifference = (seconds: number): string => {
|
|
let hours = Math.floor(seconds / 3600);
|
|
let minutes = Math.floor((seconds % 3600) / 60);
|
|
let secs = Math.floor(seconds % 60);
|
|
|
|
let timeString =
|
|
hours > 0
|
|
? `${hours < 10 ? "\u00A0" : ""}${hours}h ago`
|
|
: minutes > 0
|
|
? `${minutes < 10 ? "\u00A0" : ""}${minutes}m ago`
|
|
: `<1m ago`;
|
|
|
|
return timeString;
|
|
};
|
|
|
|
export const formatRelativeTime = (dateString: string): string => {
|
|
const now = new Date();
|
|
const past = new Date(dateString);
|
|
const diffMs = now.getTime() - past.getTime();
|
|
|
|
const diffSeconds = Math.floor(diffMs / 1000);
|
|
const diffMinutes = Math.floor(diffSeconds / 60);
|
|
const diffHours = Math.floor(diffMinutes / 60);
|
|
const diffDays = Math.floor(diffHours / 24);
|
|
|
|
if (diffSeconds < 60) return `${diffSeconds}s ago`;
|
|
if (diffMinutes < 60) return `${diffMinutes}m ago`;
|
|
if (diffHours < 24) return `${diffHours}h ago`;
|
|
return `${diffDays}d ago`;
|
|
};
|
|
|
|
export const formatLocalDate = (dateString: string): string => {
|
|
return new Date(dateString).toLocaleString(navigator.language || "en-US", {
|
|
year: "numeric",
|
|
month: "long",
|
|
day: "numeric",
|
|
hour: "numeric",
|
|
minute: "numeric",
|
|
});
|
|
};
|