[Glitch] Fix relative times
Port 312400370506ba558c30dac6641b198fac0e1300 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
parent
e5c7751d4f
commit
d3c3e5d12a
@ -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
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user