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 | 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 22x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | /* * 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, { useContext, useMemo } from 'react' import { omit } from 'lodash-es' import { useParams } from 'react-router-dom' import { useToaster } from '@wings-software/uicore' import { useStrings } from 'framework/strings' import { MonitoredServiceDTO, MonitoredServiceResponse, useSaveMonitoredService, useUpdateMonitoredService } from 'services/cv' import { getErrorMessage } from '@cv/utils/CommonUtils' import { BGColorWrapper } from '@cv/pages/health-source/common/StyledComponents' import { SetupSourceTabsContext } from '@cv/components/CVSetupSourcesView/SetupSourceTabs/SetupSourceTabs' import type { ProjectPathProps } from '@common/interfaces/RouteInterfaces' import { LoadSourceByType, createHealthsourceList } from './CustomiseHealthSource.utils' import type { SourceDataInterface, UpdatedHealthSource } from '../../HealthSourceDrawerContent.types' import { omitServiceEnvironmentKeys } from './CustomiseHealthSource.constant' type ExcludedSourceDataKeys = 'isEdit' | 'serviceRef' | 'environmentRef' | 'monitoredServiceRef' | 'changeSources' export default function CustomiseHealthSource({ onSuccess, shouldRenderAtVerifyStep }: { onSuccess: (data: MonitoredServiceResponse | UpdatedHealthSource) => void shouldRenderAtVerifyStep?: boolean }): JSX.Element { const params = useParams<ProjectPathProps & { identifier: string }>() const { getString } = useStrings() const { showError, showSuccess } = useToaster() const { sourceData } = useContext(SetupSourceTabsContext) const { mutate: saveMonitoredService } = useSaveMonitoredService({ queryParams: { accountId: params.accountId } }) const { mutate: updateMonitoredService } = useUpdateMonitoredService({ identifier: sourceData?.monitoredServiceRef?.identifier, queryParams: { accountId: params.accountId } }) // Removing Service and Environment keys const filteredSourceData: Omit<SourceDataInterface, ExcludedSourceDataKeys> = useMemo( () => omit(sourceData, omitServiceEnvironmentKeys), [sourceData] ) const isEdit = useMemo( () => params?.identifier || shouldRenderAtVerifyStep, [params?.identifier, shouldRenderAtVerifyStep] ) const submitData = async (formdata: any, healthSourcePayload: UpdatedHealthSource): Promise<void> => { if (shouldRenderAtVerifyStep) { const healthSourceList = createHealthsourceList(formdata, healthSourcePayload) const { identifier, name, description = '', tags = {} } = formdata?.monitoredServiceRef try { const payload: MonitoredServiceDTO = { orgIdentifier: params.orgIdentifier, projectIdentifier: params.projectIdentifier, serviceRef: sourceData.serviceRef, environmentRef: sourceData.environmentRef, identifier: identifier?.trim(), name, description, tags, type: 'Application', sources: { healthSources: healthSourceList, changeSources: sourceData.changeSources } } // From verify step it will be always update call since monitored service will already be created. // This flow will be triggered only when user is adding health source to existing monitored service const postdatavalue = isEdit ? await updateMonitoredService(payload) : await saveMonitoredService(payload) postdatavalue?.resource && onSuccess(postdatavalue?.resource) showSuccess( isEdit ? getString('cv.monitoredServices.monitoredServiceUpdated') : getString('cv.monitoredServices.monitoredServiceCreated') ) } catch (error) { showError(getErrorMessage(error)) } } else { onSuccess(healthSourcePayload) } } return ( <BGColorWrapper> <LoadSourceByType type={sourceData?.sourceType} data={filteredSourceData} onSubmit={submitData} /> </BGColorWrapper> ) } |