import { useCallback, useMemo } from 'react'; import { useSetting } from '../state/hooks/settings'; import { settingsAtom } from '../state/settings'; import { TimestampStyle, formatShortAge, formatTimestamp, TimestampPrefs, } from '../utils/formatTimestamp'; /** * [Gitea #139] Timestamp formatting bound to the user's clock/date settings. * `format(ts)` is the everyday "auto" style; pass a style for the others. */ export function useTimestampFormatter() { const [hour24Clock] = useSetting(settingsAtom, 'hour24Clock'); const [dateFormatString] = useSetting(settingsAtom, 'dateFormatString'); const prefs = useMemo( () => ({ hour24Clock, dateFormatString }), [hour24Clock, dateFormatString], ); const format = useCallback( (ts: number, style: TimestampStyle = 'auto') => formatTimestamp(ts, prefs, style), [prefs], ); const shortAge = useCallback((ts: number) => formatShortAge(ts, prefs), [prefs]); return { format, shortAge, prefs }; }