Skip to content

Commit 1810a77

Browse files
fix
1 parent a76ae68 commit 1810a77

3 files changed

Lines changed: 34 additions & 31 deletions

File tree

packages/web/src/app/[domain]/components/homepage/repositoryCarousel.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Image from "next/image";
1111
import { FileIcon } from "@radix-ui/react-icons";
1212
import clsx from "clsx";
1313
import { RepositoryQuery } from "@/lib/types";
14+
import { useBrowseNavigation } from "../../browse/hooks/useBrowseNavigation";
1415

1516
interface RepositoryCarouselProps {
1617
repos: RepositoryQuery[];
@@ -56,6 +57,8 @@ interface RepositoryBadgeProps {
5657
const RepositoryBadge = ({
5758
repo
5859
}: RepositoryBadgeProps) => {
60+
const { navigateToPath } = useBrowseNavigation();
61+
5962
const { repoIcon, displayName, repoLink } = (() => {
6063
const info = getCodeHostInfoForRepo({
6164
codeHostType: repo.codeHostType,
@@ -86,9 +89,11 @@ const RepositoryBadge = ({
8689
return (
8790
<div
8891
onClick={() => {
89-
if (repoLink !== undefined) {
90-
window.open(repoLink, "_blank");
91-
}
92+
navigateToPath({
93+
repoName: repo.repoName,
94+
path: '/',
95+
pathType: 'tree',
96+
});
9297
}}
9398
className={clsx("flex flex-row items-center gap-2 border rounded-md p-2 text-clip", {
9499
"cursor-pointer": repoLink !== undefined,

packages/web/src/app/[domain]/repos/columns.tsx

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22

33
import { Button } from "@/components/ui/button"
44
import type { ColumnDef } from "@tanstack/react-table"
5-
import { ArrowUpDown, ExternalLink, Clock, Loader2, CheckCircle2, XCircle, Trash2, Check, ListFilter } from "lucide-react"
5+
import { ArrowUpDown, Clock, Loader2, CheckCircle2, XCircle, Trash2, Check, ListFilter } from "lucide-react"
66
import Image from "next/image"
77
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"
88
import { cn, getRepoImageSrc } from "@/lib/utils"
99
import { RepoIndexingStatus } from "@sourcebot/db";
1010
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"
11+
import Link from "next/link"
12+
import { getBrowsePath } from "../browse/hooks/useBrowseNavigation"
1113

1214
export type RepositoryColumnInfo = {
1315
repoId: number
14-
name: string
16+
repoName: string;
17+
repoDisplayName: string
1518
imageUrl?: string
1619
repoIndexingStatus: RepoIndexingStatus
1720
lastIndexed: string
18-
url: string
1921
}
2022

2123
const statusLabels = {
@@ -90,42 +92,38 @@ const StatusIndicator = ({ status }: { status: RepoIndexingStatus }) => {
9092

9193
export const columns = (domain: string): ColumnDef<RepositoryColumnInfo>[] => [
9294
{
93-
accessorKey: "name",
95+
accessorKey: "repoDisplayName",
9496
header: 'Repository',
95-
cell: ({ row }) => {
96-
const repo = row.original
97-
const url = repo.url
98-
const isRemoteRepo = url.length > 0
99-
97+
cell: ({ row: { original: { repoId, repoName, repoDisplayName, imageUrl } } }) => {
10098
return (
10199
<div className="flex flex-row items-center gap-3 py-2">
102100
<div className="relative h-8 w-8 overflow-hidden rounded-md border bg-muted">
103-
{repo.imageUrl ? (
101+
{imageUrl ? (
104102
<Image
105-
src={getRepoImageSrc(repo.imageUrl, repo.repoId, domain) || "/placeholder.svg"}
106-
alt={`${repo.name} logo`}
103+
src={getRepoImageSrc(imageUrl, repoId, domain) || "/placeholder.svg"}
104+
alt={`${repoDisplayName} logo`}
107105
width={32}
108106
height={32}
109107
className="object-cover"
110108
/>
111109
) : (
112110
<div className="flex h-full w-full items-center justify-center bg-muted text-xs font-medium uppercase text-muted-foreground">
113-
{repo.name.charAt(0)}
111+
{repoDisplayName.charAt(0)}
114112
</div>
115113
)}
116114
</div>
117115
<div className="flex items-center gap-2">
118-
<span
119-
className={isRemoteRepo ? "font-medium text-primary hover:underline cursor-pointer" : "font-medium"}
120-
onClick={() => {
121-
if (isRemoteRepo) {
122-
window.open(url, "_blank")
123-
}
124-
}}
116+
<Link
117+
className={"font-medium text-primary hover:underline cursor-pointer"}
118+
href={getBrowsePath({
119+
repoName: repoName,
120+
path: '/',
121+
pathType: 'tree',
122+
domain
123+
})}
125124
>
126-
{repo.name.length > 40 ? `${repo.name.slice(0, 40)}...` : repo.name}
127-
</span>
128-
{isRemoteRepo && <ExternalLink className="h-3.5 w-3.5 text-muted-foreground" />}
125+
{repoDisplayName.length > 40 ? `${repoDisplayName.slice(0, 40)}...` : repoDisplayName}
126+
</Link>
129127
</div>
130128
</div>
131129
)

packages/web/src/app/[domain]/repos/repositoryTable.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,21 @@ export const RepositoryTable = ({
3737
const tableRepos = useMemo(() => {
3838
if (reposLoading) return Array(4).fill(null).map(() => ({
3939
repoId: 0,
40-
name: "",
40+
repoName: "",
41+
repoDisplayName: "",
4142
repoIndexingStatus: RepoIndexingStatus.NEW,
4243
lastIndexed: "",
43-
url: "",
4444
imageUrl: "",
4545
}));
4646

4747
if (!repos) return [];
4848
return repos.map((repo): RepositoryColumnInfo => ({
4949
repoId: repo.repoId,
50-
name: repo.repoDisplayName ?? repo.repoName,
50+
repoName: repo.repoName,
51+
repoDisplayName: repo.repoDisplayName ?? repo.repoName,
5152
imageUrl: repo.imageUrl,
5253
repoIndexingStatus: repo.repoIndexingStatus as RepoIndexingStatus,
5354
lastIndexed: repo.indexedAt?.toISOString() ?? "",
54-
url: repo.webUrl ?? repo.repoCloneUrl,
5555
})).sort((a, b) => {
5656
const getPriorityFromStatus = (status: RepoIndexingStatus) => {
5757
switch (status) {
@@ -119,7 +119,7 @@ export const RepositoryTable = ({
119119
<DataTable
120120
columns={tableColumns}
121121
data={tableRepos}
122-
searchKey="name"
122+
searchKey="repoDisplayName"
123123
searchPlaceholder="Search repositories..."
124124
headerActions={isAddReposButtonVisible && (
125125
<Button

0 commit comments

Comments
 (0)