Bluesky app fork with some witchin' additions 馃挮 witchsky.app
bluesky fork client
119
fork

Configure Feed

Select the types of activity you want to include in your feed.

at a876aae44ea07494ebea9727350aa060b81f317b 64 lines 1.6 kB view raw
1import {type I18n} from '@lingui/core' 2import {msg} from '@lingui/core/macro' 3 4export function niceDate( 5 i18n: I18n, 6 date: number | string | Date, 7 dateStyle: 'short' | 'medium' | 'long' | 'full' | 'dot separated' = 'long', 8) { 9 const d = new Date(date) 10 11 if (dateStyle === 'dot separated') { 12 return i18n._( 13 msg({ 14 context: 'date and time formatted like this: [time] 路 [date]', 15 message: `${i18n.date(d, {timeStyle: 'short'})} 路 ${i18n.date(d, {dateStyle: 'medium'})}`, 16 }), 17 ) 18 } 19 20 return i18n.date(d, { 21 dateStyle, 22 timeStyle: 'short', 23 }) 24} 25 26export function getAge(birthDate: Date): number { 27 var today = new Date() 28 var age = today.getFullYear() - birthDate.getFullYear() 29 var m = today.getMonth() - birthDate.getMonth() 30 if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 31 age-- 32 } 33 return age 34} 35 36/** 37 * Get a Date object that is N years ago from now 38 * @param years number of years 39 * @returns Date object 40 */ 41export function getDateAgo(years: number): Date { 42 const date = new Date() 43 date.setFullYear(date.getFullYear() - years) 44 return date 45} 46 47/** 48 * Compares two dates by year, month, and day only 49 */ 50export function simpleAreDatesEqual(a: Date, b: Date): boolean { 51 return ( 52 a.getFullYear() === b.getFullYear() && 53 a.getMonth() === b.getMonth() && 54 a.getDate() === b.getDate() 55 ) 56} 57 58export function formatJoinDate(date: number | string | Date): string { 59 const d = new Date(date) 60 return d.toLocaleDateString('en-US', { 61 month: 'short', 62 year: 'numeric', 63 }) 64}