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
)
}