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