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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 13x 13x 13x 13x 13x 6x 5x 13x 13x 6x 4x 4x 13x | /*
* Copyright 2021 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, { useEffect, useMemo } from 'react'
import { Container, FormInput, Layout, SelectOption, Utils, Text } from '@wings-software/uicore'
import { useParams } from 'react-router-dom'
import { Color } from '@harness/design-system'
import type { FormikProps } from 'formik'
import { useStrings } from 'framework/strings'
import { useGetServicesFromPagerDuty } from 'services/cv'
import { useToaster } from '@common/exports'
import { getErrorMessage } from '@cv/utils/CommonUtils'
import type { ProjectPathProps } from '@common/interfaces/RouteInterfaces'
import { FormConnectorReferenceField } from '@connectors/components/ConnectorReferenceField/FormConnectorReferenceField'
import type { UpdatedChangeSourceDTO } from '../../ChangeSourceDrawer.types'
import style from './PagerDutyChangeSource.module.scss'
export default function PageDutyChangeSource({
formik,
isEdit
}: {
formik: FormikProps<UpdatedChangeSourceDTO>
isEdit?: boolean
}): JSX.Element {
const { getString } = useStrings()
const { showError, clear } = useToaster()
const { orgIdentifier, projectIdentifier, accountId } = useParams<ProjectPathProps & { identifier: string }>()
const {
data: pagerdutyServices,
error: pagerdutyServicesError,
refetch: fetchPagerDutyServices,
loading: loadingPagerdutyServices
} = useGetServicesFromPagerDuty({
lazy: true
})
useEffect(() => {
if (formik?.values?.spec?.connectorRef) {
fetchPagerDutyServices({
queryParams: {
orgIdentifier,
projectIdentifier,
accountId,
connectorIdentifier: formik?.values?.spec?.connectorRef,
requestGuid: Utils.randomId()
}
})
}
}, [formik?.values?.spec?.connectorRef])
Iif (pagerdutyServicesError) {
clear()
showError(getErrorMessage(pagerdutyServicesError))
}
const pagerDutyServiceOptions = useMemo(
() =>
pagerdutyServices?.resource?.map(item => {
const service: SelectOption = {
label: item.name || '',
value: item.id || ''
}
return service
}) || [],
[pagerdutyServices?.resource]
)
return (
<Layout.Horizontal spacing={'xxlarge'}>
<Container margin={{ bottom: 'large' }} width={'400px'}>
<div className={style.connectorField}>
<FormConnectorReferenceField
width={400}
formik={formik}
disabled={isEdit}
type={formik?.values?.type as any}
name={'spec.connectorRef'}
accountIdentifier={accountId}
projectIdentifier={projectIdentifier}
orgIdentifier={orgIdentifier}
placeholder={getString('cv.healthSource.connectors.selectConnector', {
sourceType: formik?.values?.type
})}
label={getString('connectors.selectConnector')}
tooltipProps={{ dataTooltipId: 'selectPageDutyConnector' }}
/>
</div>
</Container>
{formik?.values?.spec?.connectorRef && (
<Container margin={{ bottom: 'large' }} width={'400px'}>
<FormInput.Select
disabled={isEdit}
name="spec.pagerDutyServiceId"
label={getString('cv.changeSource.PageDuty.pagerDutyService')}
placeholder={
loadingPagerdutyServices
? getString('loading')
: getString('cv.changeSource.PageDuty.selectPagerDutyService')
}
tooltipProps={{ dataTooltipId: 'pagerDutyService' }}
items={pagerDutyServiceOptions}
/>
{!pagerDutyServiceOptions.length && !loadingPagerdutyServices && (
<Text font={'xsmall'} color={Color.ERROR}>
{getString('cv.changeSource.PageDuty.pagerDutyEmptyService', {
connector: formik?.values?.spec?.connectorRef
})}
</Text>
)}
</Container>
)}
</Layout.Horizontal>
)
}
|