From 158bad92687c04a55f7fbc1653d035257c7e359f Mon Sep 17 00:00:00 2001 From: bkellam Date: Tue, 28 Oct 2025 18:08:36 -0700 Subject: [PATCH] Add banner to repos table calling out connections --- .../web/src/app/[domain]/repos/[id]/page.tsx | 6 +++--- .../web/src/app/[domain]/repos/layout.tsx | 20 +++++++++++++++++++ .../settings/connections/[id]/page.tsx | 4 ++-- .../components/connectionsTable.tsx | 1 + 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/packages/web/src/app/[domain]/repos/[id]/page.tsx b/packages/web/src/app/[domain]/repos/[id]/page.tsx index 93289206..db14e50c 100644 --- a/packages/web/src/app/[domain]/repos/[id]/page.tsx +++ b/packages/web/src/app/[domain]/repos/[id]/page.tsx @@ -102,7 +102,7 @@ export default async function RepoDetailPage({ params }: { params: Promise<{ id: - + @@ -121,7 +121,7 @@ export default async function RepoDetailPage({ params }: { params: Promise<{ id: - {repo.indexedAt ? : "Never"} + {repo.indexedAt ? : "Never"} @@ -140,7 +140,7 @@ export default async function RepoDetailPage({ params }: { params: Promise<{ id: - {nextIndexAttempt ? : "-"} + {nextIndexAttempt ? : "-"} diff --git a/packages/web/src/app/[domain]/repos/layout.tsx b/packages/web/src/app/[domain]/repos/layout.tsx index f119d94f..675fdf94 100644 --- a/packages/web/src/app/[domain]/repos/layout.tsx +++ b/packages/web/src/app/[domain]/repos/layout.tsx @@ -1,4 +1,11 @@ +import { InfoIcon } from "lucide-react"; import { NavigationMenu } from "../components/navigationMenu"; +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants"; +import Link from "next/link"; +import { getCurrentUserRole, getReposStats } from "@/actions"; +import { isServiceError } from "@/lib/utils"; +import { ServiceErrorException } from "@/lib/serviceError"; +import { OrgRole } from "@sourcebot/db"; interface LayoutProps { children: React.ReactNode; @@ -12,9 +19,22 @@ export default async function Layout( const { domain } = params; const { children } = props; + const repoStats = await getReposStats(); + if (isServiceError(repoStats)) { + throw new ServiceErrorException(repoStats); + } + + const userRoleInOrg = await getCurrentUserRole(domain); + return (
+ {(repoStats.numberOfRepos === 0 && userRoleInOrg === OrgRole.OWNER) && ( +
+ + No repositories configured. Create a connection to get started. +
+ )}
diff --git a/packages/web/src/app/[domain]/settings/connections/[id]/page.tsx b/packages/web/src/app/[domain]/settings/connections/[id]/page.tsx index a4792f4e..5db0d28c 100644 --- a/packages/web/src/app/[domain]/settings/connections/[id]/page.tsx +++ b/packages/web/src/app/[domain]/settings/connections/[id]/page.tsx @@ -121,7 +121,7 @@ export default async function ConnectionDetailPage(props: ConnectionDetailPagePr - + @@ -159,7 +159,7 @@ export default async function ConnectionDetailPage(props: ConnectionDetailPagePr - {nextSyncAttempt ? : "-"} + {nextSyncAttempt ? : "-"}
diff --git a/packages/web/src/app/[domain]/settings/connections/components/connectionsTable.tsx b/packages/web/src/app/[domain]/settings/connections/components/connectionsTable.tsx index cae2d9c4..db161124 100644 --- a/packages/web/src/app/[domain]/settings/connections/components/connectionsTable.tsx +++ b/packages/web/src/app/[domain]/settings/connections/components/connectionsTable.tsx @@ -88,6 +88,7 @@ export const columns: ColumnDef[] = [ {`${connection.codeHostType}