mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { useEffect, useState } from 'react'
|
|
|
|
import { getReleaseTime } from '@/utils/time'
|
|
|
|
import type { GithubRelease as GithubReleaseType } from '@/types/github'
|
|
|
|
export interface GithubReleaseProps {
|
|
releaseData: GithubReleaseType
|
|
}
|
|
const GithubRelease: React.FC<GithubReleaseProps> = (props) => {
|
|
const { releaseData } = props
|
|
const [releaseTime, setReleaseTime] = useState<string | null>(null)
|
|
|
|
useEffect(() => {
|
|
if (releaseData) {
|
|
const timer = setInterval(() => {
|
|
const time = getReleaseTime(releaseData.published_at)
|
|
|
|
setReleaseTime(time)
|
|
}, 1000)
|
|
|
|
return () => clearInterval(timer)
|
|
}
|
|
}, [releaseData])
|
|
|
|
return (
|
|
<div className="flex flex-col gap-1">
|
|
<span>Releases</span>
|
|
<div className="px-2 py-1 rounded-small bg-default-100 bg-opacity-50 backdrop-blur-sm group-data-[hover=true]:bg-default-200">
|
|
<span className="text-tiny text-default-600">{releaseData.name}</span>
|
|
<div className="flex gap-2 text-tiny">
|
|
<span className="text-default-500">{releaseTime}</span>
|
|
<span className="text-success">Latest</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default GithubRelease
|