Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | 7x 7x 7x 7x 7x 7x 7x 7x 7x 57x 57x 57x 57x 57x 57x 57x 57x 57x 57x 7x | /* * Copyright 2022 Harness Inc. All rights reserved. * Use of this source code is governed by the PolyForm Shield 1.0.0 license * that can be found in the licenses directory at the root of this repository, also available at * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt. */ import React, { useState, useEffect } from 'react' import { Container, ModalErrorHandlerBinding, shouldShowError } from '@harness/uicore' import { useParams } from 'react-router-dom' import { noop } from 'lodash-es' import { TestConnectionWidget, TestStatus } from '@common/components/TestConnectionWidget/TestConnectionWidget' import type { ProjectPathProps } from '@common/interfaces/RouteInterfaces' import { ResponseConnectorValidationResult, useGetTestGitRepoConnectionResult } from 'services/cd-ng' import type { ConnectorSelectedValue } from '@connectors/components/ConnectorReferenceField/ConnectorReferenceField' import useRBACError from '@rbac/utils/useRBACError/useRBACError' import css from './GitSyncRepoForm.module.scss' export interface RepoTestConnectionProps { gitConnector?: ConnectorSelectedValue repoURL?: string onTestStatusChange?: (testStatus: TestStatus) => void // Can be used in parent modalErrorHandler?: ModalErrorHandlerBinding } const RepoTestConnection: React.FC<RepoTestConnectionProps> = props => { const { gitConnector, repoURL = '', onTestStatusChange = noop, modalErrorHandler } = props const { identifier = '', orgIdentifier, projectIdentifier } = gitConnector?.connector || {} const { getRBACErrorMessage } = useRBACError() const { accountId } = useParams<ProjectPathProps>() const [testStatus, setTestStatus] = useState<TestStatus>(TestStatus.NOT_INITIATED) const { mutate: testRepo } = useGetTestGitRepoConnectionResult({ identifier, pathParams: { identifier }, queryParams: { repoURL } }) useEffect(() => { onTestStatusChange(testStatus) }, [onTestStatusChange, testStatus]) const testConnection = async (): Promise<void> => { modalErrorHandler?.hide() if (identifier && repoURL) { setTestStatus(TestStatus.IN_PROGRESS) testRepo(undefined, { pathParams: { identifier }, queryParams: { accountIdentifier: accountId, orgIdentifier, projectIdentifier, repoURL } }) .then((response: ResponseConnectorValidationResult) => { if (response?.data?.status !== 'SUCCESS') { setTestStatus(TestStatus.FAILED) } else { setTestStatus(TestStatus.SUCCESS) } }) .catch(e => { setTestStatus(TestStatus.FAILED) if (shouldShowError(e)) { modalErrorHandler?.showDanger(getRBACErrorMessage(e)) } }) } } return identifier ? ( <Container flex className={css.testConnection}> <TestConnectionWidget testStatus={testStatus} onTest={testConnection} /> </Container> ) : null } export default RepoTestConnection |