import { FormLabel } from "@app/components/v2";
import { CircleCiScope } from "@app/hooks/api/integrationAuth/types";
import { IntegrationMappingBehavior, TIntegrationWithEnv } from "@app/hooks/api/integrations/types";
import { integrationSlugNameMapping } from "../IntegrationsDetailsByIDPage.utils";
type Props = {
integration: TIntegrationWithEnv;
};
export const IntegrationConnectionSection = ({ integration }: Props) => {
const specifcQoveryDetails = () => {
if (integration.integration !== "qovery") return null;
return (
{integration?.owner || "-"}
{integration?.targetService || "-"}
{integration?.targetEnvironment || "-"}
);
};
const isNotAwsManagerOneToOneDetails = () => {
const isAwsSecretManagerOneToOne =
integration.integration === "aws-secret-manager" &&
integration.metadata?.mappingBehavior === IntegrationMappingBehavior.ONE_TO_ONE;
if (isAwsSecretManagerOneToOne) {
return null;
}
const formLabel = () => {
switch (integration.integration) {
case "qovery":
return integration.scope;
case "circleci":
if (integration.scope === CircleCiScope.Context) {
return "Context";
}
return "Project";
case "terraform-cloud":
return "Project";
case "aws-secret-manager":
return "Secret";
case "aws-parameter-store":
case "rundeck":
return "Path";
case "bitbucket":
return "Repository";
case "octopus-deploy":
return "Project";
case "github":
if (["github-env", "github-repo"].includes(integration.scope!)) {
return "Repository";
}
return "Organization";
default:
return "App";
}
};
const contents = () => {
switch (integration.integration) {
case "hashicorp-vault":
return `${integration.app} - path: ${integration.path}`;
case "github":
if (integration.scope === "github-org") {
return `${integration.owner}`;
}
return `${integration.owner}/${integration.app}`;
case "aws-parameter-store":
case "rundeck":
return `${integration.path}`;
default:
return `${integration.app}`;
}
};
return (
);
};
const targetEnvironmentDetails = () => {
if (integration.integration === "bitbucket") {
return (
{integration.targetEnvironment || integration.targetEnvironmentId}
);
}
if (integration.integration === "octopus-deploy") {
return (
{integration.targetEnvironment}
);
}
if (
["vercel", "netlify", "railway", "gitlab", "teamcity"].includes(integration.integration) ||
(integration.integration === "github" && integration.scope === "github-env")
) {
return (
{integration.targetEnvironment || integration.targetEnvironmentId}
);
}
return null;
};
const generalIntegrationSpecificDetails = () => {
if (integration.integration === "checkly" && integration.targetService) {
return (
{integration.targetService}
);
}
if (integration.integration === "circleci" && integration.owner) {
return (
);
}
if (integration.integration === "terraform-cloud" && integration.targetService) {
return (
{integration.targetService}
);
}
if (integration.integration === "checkly" || integration.integration === "github") {
return (
{integration?.metadata?.secretSuffix || "-"}
);
}
if (integration.integration === "bitbucket" && integration.targetServiceId) {
return (
{integration.targetService}
);
}
return null;
};
return (
Connection
{integration.environment.name}
{integrationSlugNameMapping?.[integration.integration]}
{specifcQoveryDetails()}
{isNotAwsManagerOneToOneDetails()}
{targetEnvironmentDetails()}
{generalIntegrationSpecificDetails()}
);
};