42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import {
|
|
differenceInSeconds,
|
|
differenceInMinutes,
|
|
differenceInHours,
|
|
differenceInDays,
|
|
differenceInWeeks,
|
|
differenceInMonths,
|
|
differenceInYears,
|
|
formatDistanceToNow,
|
|
} from 'date-fns';
|
|
import { enUS, es, pt } from 'date-fns/locale';
|
|
import { getLanguageFromLocalStorage } from './language-utils';
|
|
|
|
export function calculateTimeDifference(timestamp: string | Date): string {
|
|
const date = typeof timestamp === 'string' ? new Date(timestamp) : timestamp;
|
|
const localeString = getLanguageFromLocalStorage();
|
|
const locale = localeString === 'en' ? enUS : localeString === 'es' ? es : pt;
|
|
const now = new Date();
|
|
|
|
const diffInSeconds = differenceInSeconds(now, date);
|
|
if (diffInSeconds < 60) {
|
|
return 'Just now';
|
|
}
|
|
|
|
const distanceFunctions = [
|
|
differenceInYears,
|
|
differenceInMonths,
|
|
differenceInWeeks,
|
|
differenceInDays,
|
|
differenceInHours,
|
|
differenceInMinutes,
|
|
];
|
|
|
|
for (const distanceFunction of distanceFunctions) {
|
|
if (distanceFunction(now, date) > 0) {
|
|
return formatDistanceToNow(date, { addSuffix: true, locale });
|
|
}
|
|
}
|
|
|
|
return 'Just now';
|
|
}
|