Skip to content

Commit 72b0a8c

Browse files
committed
fix: relative timer not updating
1 parent 368954d commit 72b0a8c

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

src/hooks/useRelativeTime.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,25 @@ import { useTranslation } from 'react-i18next'
66
import { 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
*/
1315
export 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')

0 commit comments

Comments
 (0)