Files
cinny/src/app/hooks/useTimestampFormatter.ts
T

29 lines
1000 B
TypeScript
Raw Normal View History

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<TimestampPrefs>(
() => ({ 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 };
}