diff --git a/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx b/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx index 2bbc9024..662d2e47 100644 --- a/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx +++ b/packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx @@ -11,6 +11,10 @@ import Image from "next/image"; import { FileIcon } from "@radix-ui/react-icons"; import clsx from "clsx"; import { RepositoryQuery } from "@/lib/types"; +import Link from "next/link"; +import { getBrowsePath } from "../../browse/hooks/useBrowseNavigation"; +import { useMemo } from "react"; +import { useDomain } from "@/hooks/useDomain"; interface RepositoryCarouselProps { repos: RepositoryQuery[]; @@ -56,7 +60,9 @@ interface RepositoryBadgeProps { const RepositoryBadge = ({ repo }: RepositoryBadgeProps) => { - const { repoIcon, displayName, repoLink } = (() => { + const domain = useDomain(); + + const { repoIcon, displayName, repoLink } = useMemo(() => { const info = getCodeHostInfoForRepo({ codeHostType: repo.codeHostType, name: repo.repoName, @@ -64,6 +70,13 @@ const RepositoryBadge = ({ webUrl: repo.webUrl, }); + const link = getBrowsePath({ + repoName: repo.repoName, + path: "", + pathType: "tree", + domain, + }) + if (info) { return { repoIcon: , displayName: info.displayName, - repoLink: info.repoLink, + repoLink: link, } } @@ -81,15 +94,11 @@ const RepositoryBadge = ({ displayName: repo.repoName, repoLink: undefined, } - })(); + }, [repo.codeHostType, repo.repoName, repo.repoDisplayName, repo.webUrl, domain]); return ( -
{ - if (repoLink !== undefined) { - window.open(repoLink, "_blank"); - } - }} + {displayName} -
+ ) }