From 953b246571e0fd71910518b24e339f879cfb961a Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 18 Jun 2024 09:56:31 -0500 Subject: [PATCH] Delete old code --- src/lib/strings/__tests__/time.test.ts | 99 -------------------------- src/lib/strings/time.ts | 65 ----------------- 2 files changed, 164 deletions(-) delete mode 100644 src/lib/strings/__tests__/time.test.ts diff --git a/src/lib/strings/__tests__/time.test.ts b/src/lib/strings/__tests__/time.test.ts deleted file mode 100644 index 1f6bc035b3..0000000000 --- a/src/lib/strings/__tests__/time.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -import {describe, expect, it} from '@jest/globals' -import {addDays, subDays, subHours, subMinutes, subSeconds} from 'date-fns' - -import {dateDiff} from '../time' - -const base = new Date('2024-06-17T00:00:00Z') - -describe('dateDiff', () => { - it(`works with numbers`, () => { - expect(dateDiff(subDays(base, 3), Number(base))).toEqual('3d') - }) - it(`works with strings`, () => { - expect(dateDiff(subDays(base, 3), base.toString())).toEqual('3d') - }) - it(`works with dates`, () => { - expect(dateDiff(subDays(base, 3), base)).toEqual('3d') - }) - - it(`equal values return now`, () => { - expect(dateDiff(base, base)).toEqual('now') - }) - it(`future dates return now`, () => { - expect(dateDiff(addDays(base, 3), base)).toEqual('now') - }) - - it(`values < 5 seconds ago return now`, () => { - const then = subSeconds(base, 4) - expect(dateDiff(then, base)).toEqual('now') - }) - it(`values >= 5 seconds ago return seconds`, () => { - const then = subSeconds(base, 5) - expect(dateDiff(then, base)).toEqual('5s') - }) - - it(`values < 1 min return seconds`, () => { - const then = subSeconds(base, 59) - expect(dateDiff(then, base)).toEqual('59s') - }) - it(`values >= 1 min return minutes`, () => { - const then = subSeconds(base, 60) - expect(dateDiff(then, base)).toEqual('1m') - }) - it(`minutes round down`, () => { - const then = subSeconds(base, 119) - expect(dateDiff(then, base)).toEqual('1m') - }) - - it(`values < 1 hour return minutes`, () => { - const then = subMinutes(base, 59) - expect(dateDiff(then, base)).toEqual('59m') - }) - it(`values >= 1 hour return hours`, () => { - const then = subMinutes(base, 60) - expect(dateDiff(then, base)).toEqual('1h') - }) - it(`hours round down`, () => { - const then = subMinutes(base, 119) - expect(dateDiff(then, base)).toEqual('1h') - }) - - it(`values < 1 day return hours`, () => { - const then = subHours(base, 23) - expect(dateDiff(then, base)).toEqual('23h') - }) - it(`values >= 1 day return days`, () => { - const then = subHours(base, 24) - expect(dateDiff(then, base)).toEqual('1d') - }) - it(`days round down`, () => { - const then = subHours(base, 47) - expect(dateDiff(then, base)).toEqual('1d') - }) - - it(`values < 30 days return days`, () => { - const then = subDays(base, 29) - expect(dateDiff(then, base)).toEqual('29d') - }) - it(`values >= 30 days return months`, () => { - const then = subDays(base, 30) - expect(dateDiff(then, base)).toEqual('1mo') - }) - it(`months round down`, () => { - const then = subDays(base, 59) - expect(dateDiff(then, base)).toEqual('1mo') - }) - it(`values are rounded by increments of 30`, () => { - const then = subDays(base, 61) - expect(dateDiff(then, base)).toEqual('2mo') - }) - - it(`values < 360 days return months`, () => { - const then = subDays(base, 359) - expect(dateDiff(then, base)).toEqual('11mo') - }) - it(`values >= 360 days return the earlier value`, () => { - const then = subDays(base, 361) - expect(dateDiff(then, base)).toEqual(then.toLocaleDateString()) - }) -}) diff --git a/src/lib/strings/time.ts b/src/lib/strings/time.ts index ce98afce78..1194e0240c 100644 --- a/src/lib/strings/time.ts +++ b/src/lib/strings/time.ts @@ -1,68 +1,3 @@ -import {plural} from '@lingui/macro' -import {differenceInSeconds} from 'date-fns' - -export function ago(date: number | string | Date): string { - return dateDiff(date, Date.now()) -} - -const NOW = 5 -const MINUTE = 60 -const HOUR = MINUTE * 60 -const DAY = HOUR * 24 -const MONTH_30 = DAY * 30 - -/** - * Returns the difference between date1 and date2 in full seconds, minutes, - * hours etc. All month are considered exactly 30 days. Assuming that date1 <= - * date2. Differences >= 360 days are returned as the "M/D/YYYY" string - */ -export function dateDiff( - earlier: number | string | Date, - later: number | string | Date, - options?: { - format?: 'long' | 'short' - }, -): string { - const format = options?.format || 'short' - const long = format === 'long' - const diffSeconds = differenceInSeconds(new Date(later), new Date(earlier)) - - if (diffSeconds < NOW) { - return `now` - } else if (diffSeconds < MINUTE) { - return `${diffSeconds}${ - long ? ` ${plural(diffSeconds, {one: 'second', other: 'seconds'})}` : 's' - }` - } else if (diffSeconds < HOUR) { - const diff = Math.floor(diffSeconds / MINUTE) - return `${diff}${ - long ? ` ${plural(diff, {one: 'minute', other: 'minutes'})}` : 'm' - }` - } else if (diffSeconds < DAY) { - const diff = Math.floor(diffSeconds / HOUR) - return `${diff}${ - long ? ` ${plural(diff, {one: 'hour', other: 'hours'})}` : 'h' - }` - } else if (diffSeconds < MONTH_30) { - const diff = Math.floor(diffSeconds / DAY) - return `${diff}${ - long ? ` ${plural(diff, {one: 'day', other: 'days'})}` : 'd' - }` - } else { - const diffMonths30 = Math.floor(diffSeconds / MONTH_30) - if (diffMonths30 < 12) { - return `${diffMonths30}${long ? ' months' : 'mo'}` - } else { - const str = new Date(earlier).toLocaleDateString() - - if (long) { - return `on ${str}` - } - return str - } - } -} - export function niceDate(date: number | string | Date) { const d = new Date(date) return `${d.toLocaleDateString('en-us', {