| @@ -2,6 +2,11 @@ | |||
| import { useQuery } from '@tanstack/react-query' | |||
| import type { FC } from 'react' | |||
| import type { GithubRepo } from '@/models/common' | |||
| import { RiLoader2Line } from '@remixicon/react' | |||
| const defaultData = { | |||
| stargazers_count: 98570, | |||
| } | |||
| const getStar = async () => { | |||
| const res = await fetch('https://api.github.com/repos/langgenius/dify') | |||
| @@ -13,15 +18,21 @@ const getStar = async () => { | |||
| } | |||
| const GithubStar: FC<{ className: string }> = (props) => { | |||
| const { isFetching, data } = useQuery<GithubRepo>({ | |||
| const { isFetching, isError, data } = useQuery<GithubRepo>({ | |||
| queryKey: ['github-star'], | |||
| queryFn: getStar, | |||
| enabled: process.env.NODE_ENV !== 'development', | |||
| initialData: { stargazers_count: 81204 }, | |||
| retry: false, | |||
| placeholderData: defaultData, | |||
| }) | |||
| if (isFetching) | |||
| return null | |||
| return <span {...props}>{data.stargazers_count.toLocaleString()}</span> | |||
| return <RiLoader2Line className='size-3 shrink-0 animate-spin text-text-tertiary' /> | |||
| if (isError) | |||
| return <span {...props}>{defaultData.stargazers_count.toLocaleString()}</span> | |||
| return <span {...props}>{data?.stargazers_count.toLocaleString()}</span> | |||
| } | |||
| export default GithubStar | |||