Files
newsnow/src/hooks/useRelativeTime.ts
T
2024-10-05 02:29:05 +08:00

30 lines
617 B
TypeScript

import { relativeTime } from "@shared/utils"
import { atom, useAtomValue } from "jotai"
import { useEffect, useState } from "react"
/**
* change every minute
*/
const timerAtom = atom(0)
timerAtom.onMount = (set) => {
const timer = setInterval(() => {
set(Date.now())
}, 60 * 1000)
return () => clearInterval(timer)
}
export function useRelativeTime(timestamp: string | number) {
const [time, setTime] = useState<string>()
const timer = useAtomValue(timerAtom)
useEffect(() => {
const t = relativeTime(timestamp)
if (t) {
setTime(t)
}
}, [timestamp, timer])
return time
}