File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -6,24 +6,25 @@ import { useTranslation } from 'react-i18next'
66import { useFormatStore } from '@store/useFormatStore'
77
88/**
9+ * Hook that returns a periodically updating relative time string for a unix epoch (seconds).
10+ * The interval depends on epochTime so its closure always reflects the current timestamp.
911 *
1012 * @param {number } epochTime
11- * @returns
13+ * @returns { string }
1214 */
1315export function useRelativeTimer ( epochTime ) {
1416 const { t } = useTranslation ( )
1517 const relativeFormat = useFormatStore ( ( s ) => s . getRelative )
1618 const [ relative , setRelative ] = useState ( relativeFormat ( epochTime ) )
1719
20+ // Single effect: set immediately on mount/change, then tick every second.
1821 useEffect ( ( ) => {
22+ // Immediate update for new epochTime before first interval tick
23+ setRelative ( relativeFormat ( epochTime ) )
1924 const interval = setInterval ( ( ) => {
2025 setRelative ( relativeFormat ( epochTime ) )
2126 } , 1000 )
2227 return ( ) => clearInterval ( interval )
23- } , [ relativeFormat ] )
24-
25- useEffect ( ( ) => {
26- setRelative ( relativeFormat ( epochTime ) )
2728 } , [ epochTime , relativeFormat ] )
2829
2930 return epochTime ? relative : t ( 'never' )
You can’t perform that action at this time.
0 commit comments