[Glitch] Fix relative times

Port 312400370506ba558c30dac6641b198fac0e1300 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Claire 2026-07-07 10:22:54 +02:00 committed by Tarrien
parent e5c7751d4f
commit d3c3e5d12a
2 changed files with 18 additions and 8 deletions

View File

@ -9,13 +9,15 @@ describe('relativeTimeParts', () => {
// Past // Past
[-30 * SECOND, { value: -30, unit: 'second' }], [-30 * SECOND, { value: -30, unit: 'second' }],
[-90 * SECOND, { value: -2, unit: 'minute' }], [-60 * SECOND, { value: -1, unit: 'minute' }],
[-90 * SECOND, { value: -1, unit: 'minute' }],
[-30 * MINUTE, { value: -30, unit: 'minute' }], [-30 * MINUTE, { value: -30, unit: 'minute' }],
[-90 * MINUTE, { value: -2, unit: 'hour' }], [-60 * MINUTE, { value: -1, unit: 'hour' }],
[-90 * MINUTE, { value: -1, unit: 'hour' }],
[-5 * HOUR, { value: -5, unit: 'hour' }], [-5 * HOUR, { value: -5, unit: 'hour' }],
[-24 * HOUR, { value: -1, unit: 'day' }], [-24 * HOUR, { value: -1, unit: 'day' }],
[-36 * HOUR, { value: -1, unit: 'day' }], [-36 * HOUR, { value: -1, unit: 'day' }],
[-47 * HOUR, { value: -2, unit: 'day' }], [-47 * HOUR, { value: -1, unit: 'day' }],
[-3 * DAY, { value: -3, unit: 'day' }], [-3 * DAY, { value: -3, unit: 'day' }],
// Future // Future

View File

@ -16,21 +16,29 @@ export function relativeTimeParts(
): { value: number; unit: TimeUnit; delta: number } { ): { value: number; unit: TimeUnit; delta: number } {
const delta = ts - now; const delta = ts - now;
const absDelta = Math.abs(delta); const absDelta = Math.abs(delta);
const sign = Math.sign(delta);
if (absDelta < MINUTE) { if (absDelta < MINUTE) {
return { value: Math.floor(delta / SECOND), unit: 'second', delta }; return {
value: sign * Math.floor(absDelta / SECOND),
unit: 'second',
delta,
};
} }
if (absDelta < HOUR) { if (absDelta < HOUR) {
return { value: Math.floor(delta / MINUTE), unit: 'minute', delta }; return {
value: sign * Math.floor(absDelta / MINUTE),
unit: 'minute',
delta,
};
} }
if (absDelta < DAY) { if (absDelta < DAY) {
return { value: Math.floor(delta / HOUR), unit: 'hour', delta }; return { value: sign * Math.floor(absDelta / HOUR), unit: 'hour', delta };
} }
// Round instead of use floor as days are big enough that the value is usually off by a few hours. return { value: sign * Math.floor(absDelta / DAY), unit: 'day', delta };
return { value: Math.round(delta / DAY), unit: 'day', delta };
} }
export function isToday(ts: number, now = Date.now()): boolean { export function isToday(ts: number, now = Date.now()): boolean {