import { Listbox, ListboxItem } from '@heroui/listbox' import { Spinner } from '@heroui/spinner' import { useRequest } from 'ahooks' import { MdError } from 'react-icons/md' import IconWrapper from '@/components/github_info/icon_wrapper' import ItemCounter from '@/components/github_info/item_counter' import GithubRelease from '@/components/github_info/release' import { BookIcon, BugIcon, PullRequestIcon, StarIcon, TagIcon, UsersIcon, WatchersIcon } from '@/components/icons' import { request } from '@/utils/request' import { openUrl } from '@/utils/url' import type { GirhubRepo, GithubContributor, GithubPullRequest, GithubRelease as GithubReleaseType } from '@/types/github' function displayData(data: number, loading: boolean, error?: Error) { if (error) { return } if (loading) { return } return } export default function NapCatRepoInfo() { // repo info const { data: repoOriData, error: repoError, loading: repoLoading } = useRequest(() => request.get('https://api.github.com/repos/NapNeko/NapCatQQ') ) // release info const { data: releaseOriData, error: releaseError, loading: releaseLoading } = useRequest(() => request.get( 'https://api.github.com/repos/NapNeko/NapCatQQ/releases' ) ) // pr info const { data: prData, error: prError, loading: prLoading } = useRequest(() => request.get( 'https://api.github.com/repos/NapNeko/NapCatQQ/pulls' ) ) // contributors info const { data: contributorsData, error: contributorsError, loading: contributorsLoading } = useRequest(() => request.get( 'https://api.github.com/repos/NapNeko/NapCatQQ/contributors' ) ) const repoData = repoOriData?.data const releaseData = releaseOriData?.data?.[0] const prCount = prData?.data?.length || 0 const contributorsCount = contributorsData?.data?.length || 0 const releaseCount = releaseOriData?.data?.length || 0 return ( { switch (key) { case 'releases': openUrl('https://github.com/NapNeko/NapCatQQ/releases', true) break case 'contributors': openUrl( 'https://github.com/NapNeko/NapCatQQ/graphs/contributors', true ) break case 'license': openUrl( 'https://github.com/NapNeko/NapCatQQ/blob/main/LICENSE', true ) break case 'watchers': openUrl('https://github.com/NapNeko/NapCatQQ/watchers', true) break case 'star': openUrl('https://github.com/NapNeko/NapCatQQ/stargazers', true) break case 'issues': openUrl('https://github.com/NapNeko/NapCatQQ/issues', true) break case 'pull_requests': openUrl('https://github.com/NapNeko/NapCatQQ/pulls', true) break default: openUrl('https://github.com/NapNeko/NapCatQQ', true) } }} > } > Star } > Issues } > Pull Requests ) : releaseLoading ? ( ) : ( ) } startContent={ } textValue="Releases" > {releaseData && } } > Contributors } > Watchers {repoData?.license?.name ?? 'unknown'} } startContent={ } > License ) }