opendesk
Publicutils.ts
/** Duration as at most two units, never decimal hours: "2h 30m", "45m"; sub-minute rounds up to "1m" */
export function formatSeconds(
seconds: number | null | undefined
): string | null {
if (seconds === null || seconds === undefined || seconds < 0) return null;
const days = Math.floor(seconds / 86400);
const hours = Math.floor((seconds % 86400) / 3600);
const minutes = Math.floor((seconds % 3600) / 60);
if (days) return hours ? `${days}d ${hours}h` : `${days}d`;
if (hours) return minutes ? `${hours}h ${minutes}m` : `${hours}h`;
if (minutes) return `${minutes}m`;
return "1m";
}