import { Controller, useFormContext } from "react-hook-form"; import { faInfoCircle } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Link } from "@tanstack/react-router"; import { FilterableSelect, FormControl } from "@app/components/v2"; import { OrgPermissionSubjects, useOrgPermission } from "@app/context"; import { OrgPermissionAppConnectionActions } from "@app/context/OrgPermissionContext/types"; import { APP_CONNECTION_MAP } from "@app/helpers/appConnections"; import { SECRET_ROTATION_CONNECTION_MAP } from "@app/helpers/secretRotationsV2"; import { useListAvailableAppConnections } from "@app/hooks/api/appConnections"; import { TSecretRotationV2Form } from "./schemas"; type Props = { onChange?: VoidFunction; isUpdate: boolean; }; export const SecretRotationV2ConnectionField = ({ onChange: callback, isUpdate }: Props) => { const { permission } = useOrgPermission(); const { control, watch } = useFormContext(); const rotationType = watch("type"); const app = SECRET_ROTATION_CONNECTION_MAP[rotationType]; const { data: availableConnections, isPending } = useListAvailableAppConnections(app); const connectionName = APP_CONNECTION_MAP[app].name; const canCreateConnection = permission.can( OrgPermissionAppConnectionActions.Create, OrgPermissionSubjects.AppConnections ); const appName = APP_CONNECTION_MAP[app].name; return ( <> ( { onChange(newValue); if (callback) callback(); }} isLoading={isPending} options={availableConnections} isDisabled={isUpdate} placeholder="Select connection..." getOptionLabel={(option) => option.name} getOptionValue={(option) => option.id} /> )} control={control} name="connection" /> {!isUpdate && availableConnections?.length === 0 && (

{canCreateConnection ? ( <> You do not have access to any {appName} Connections. Create one from the{" "} App Connections {" "} page. ) : ( `You do not have access to any ${appName} Connections. Contact an admin to create one.` )}

)} ); };