Bluesky app fork with some witchin' additions 馃挮 witchsky.app
bluesky fork client
at main 33 lines 908 B view raw
1import {useState} from 'react' 2import {type I18n} from '@lingui/core' 3import {useLingui} from '@lingui/react' 4 5import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo' 6import {useTickEveryMinute} from '#/state/shell' 7 8export function TimeElapsed({ 9 timestamp, 10 children, 11 timeToString, 12}: { 13 timestamp: string 14 children: ({timeElapsed}: {timeElapsed: string}) => React.ReactElement 15 timeToString?: (i18n: I18n, timeElapsed: string) => string 16}) { 17 const {i18n} = useLingui() 18 const ago = useGetTimeAgo() 19 const tick = useTickEveryMinute() 20 const [timeElapsed, setTimeAgo] = useState(() => 21 timeToString ? timeToString(i18n, timestamp) : ago(timestamp, tick), 22 ) 23 24 const [prevTick, setPrevTick] = useState(tick) 25 if (prevTick !== tick) { 26 setPrevTick(tick) 27 setTimeAgo( 28 timeToString ? timeToString(i18n, timestamp) : ago(timestamp, tick), 29 ) 30 } 31 32 return children({timeElapsed}) 33}