import { useEffect, useState } from 'react'; import { useRouter } from 'next/router'; import queryString from 'query-string'; import { Button, Card, CardTitle, FormControl, Input, Select, SelectItem } from '../../../components/v2'; import { useGetIntegrationAuthById } from '../../../hooks/api/integrationAuth'; import { useGetWorkspaceById } from '../../../hooks/api/workspace'; import createIntegration from '../../api/integrations/createIntegration'; export default function AzureKeyVaultCreateIntegrationPage() { const router = useRouter(); const { integrationAuthId } = queryString.parse(router.asPath.split('?')[1]); const { data: workspace } = useGetWorkspaceById(localStorage.getItem('projectData.id') ?? ''); const { data: integrationAuth } = useGetIntegrationAuthById((integrationAuthId as string) ?? ''); const [selectedSourceEnvironment, setSelectedSourceEnvironment] = useState(''); const [vaultBaseUrl, setVaultBaseUrl] = useState(''); const [vaultBaseUrlErrorText, setVaultBaseUrlErrorText] = useState(''); const [isLoading, setIsLoading] = useState(false); useEffect(() => { if (workspace) { setSelectedSourceEnvironment(workspace.environments[0].slug); } }, [workspace]); const handleButtonClick = async () => { try { if (vaultBaseUrl.length === 0) { setVaultBaseUrlErrorText('Vault URI cannot be blank'); return; } if (!vaultBaseUrl.startsWith('https://') || !vaultBaseUrl.endsWith('vault.azure.net')) { setVaultBaseUrlErrorText('Vault URI must be like https://.vault.azure.net'); return; } if (!integrationAuth?._id) return; setIsLoading(true); await createIntegration({ integrationAuthId: integrationAuth?._id, isActive: true, app: vaultBaseUrl, appId: null, sourceEnvironment: selectedSourceEnvironment, targetEnvironment: null, targetEnvironmentId: null, targetService: null, targetServiceId: null, owner: null, path: null, region: null }); setIsLoading(false); router.push(`/integrations/${localStorage.getItem('projectData.id')}`); } catch (err) { console.error(err); } }; return integrationAuth && workspace && selectedSourceEnvironment ? (
Azure Key Vault Integration setVaultBaseUrl(e.target.value)} />
) : (
); } AzureKeyVaultCreateIntegrationPage.requireAuth = true;