import { ReactNode } from "react"; import { faInfoCircle } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { GenericFieldLabel } from "@app/components/secret-syncs"; import { GitHubSyncSelectedRepositoriesTooltipContent } from "@app/components/secret-syncs/github"; import { Tooltip } from "@app/components/v2"; import { GitHubSyncScope, GitHubSyncVisibility, TGitHubSync } from "@app/hooks/api/secretSyncs/types/github-sync"; type Props = { secretSync: TGitHubSync; }; export const GitHubSyncDestinationSection = ({ secretSync }: Props) => { const { destinationConfig } = secretSync; let Components: ReactNode; switch (destinationConfig.scope) { case GitHubSyncScope.Organization: Components = ( <> {destinationConfig.org} {destinationConfig.visibility} Repositories {destinationConfig.visibility === GitHubSyncVisibility.Selected && ( {destinationConfig.selectedRepositoryIds?.length ?? 0} Repositories } > )} ); break; case GitHubSyncScope.Repository: Components = ( {destinationConfig.owner}/{destinationConfig.repo} ); break; case GitHubSyncScope.RepositoryEnvironment: Components = ( <> {destinationConfig.owner}/{destinationConfig.repo} {destinationConfig.env} ); break; default: throw new Error( `Uhandled GitHub Sync Destination Section Scope ${secretSync.destinationConfig.scope}` ); } return ( <> {destinationConfig.scope.replace("-", " ")} {Components} ); };