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 | 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 9x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x 2x 2x 9x | /*
* 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, { useEffect, useState } from 'react'
import { useParams, useLocation } from 'react-router-dom'
import { TabNavigation } from '@wings-software/uicore'
import { NGBreadcrumbs } from '@common/components/NGBreadcrumbs/NGBreadcrumbs'
import { Page } from '@common/exports'
import ScopedTitle from '@common/components/Title/ScopedTitle'
import { Scope } from '@common/interfaces/SecretsInterface'
import routes from '@common/RouteDefinitions'
import type { ProjectPathProps, PipelineType } from '@common/interfaces/RouteInterfaces'
import { getLinkForAccountResources } from '@common/utils/BreadcrumbUtils'
import type { GetDelegateGroupsNGV2WithFilterQueryParams } from 'services/portal'
import { useListDelegateConfigsNgV2WithFilter } from 'services/cd-ng'
import type { DelegateProfileDetailsNg } from 'services/cd-ng'
import { useStrings } from 'framework/strings'
const DelegatesPage: React.FC = ({ children }) => {
const params = useParams<PipelineType<ProjectPathProps>>()
const { accountId, orgIdentifier, projectIdentifier, module } = params
const { getString } = useStrings()
const { pathname } = useLocation()
const [profiles, setProfiles] = useState<DelegateProfileDetailsNg[]>([])
const isDelTokensPage =
pathname.indexOf(
routes.toDelegateTokens({ accountId: params.accountId, orgIdentifier, projectIdentifier, module })
) !== -1
const { mutate: getDelegateProfiles } = useListDelegateConfigsNgV2WithFilter({
accountId,
queryParams: { orgId: orgIdentifier, projectId: projectIdentifier }
})
const getDelegates = async () => {
const delProfilesResponse = await getDelegateProfiles(
{
filterType: 'DelegateProfile'
},
{
queryParams: {
accountId,
module,
pageSize: 10,
searchTerm: ''
} as GetDelegateGroupsNGV2WithFilterQueryParams
}
)
const resource = delProfilesResponse?.resource as any
setProfiles(resource?.response || [])
}
useEffect(() => {
getDelegates()
}, [getDelegateProfiles])
const links = [
{
label: getString('delegate.delegates'),
to: routes.toDelegateList({ accountId, orgIdentifier, projectIdentifier, module })
}
]
if (profiles.length > 0) {
links.push({
label: getString('delegate.delegateConfigurations'),
to: routes.toDelegateConfigs({ accountId, orgIdentifier, projectIdentifier, module })
})
}
links.push({
label: getString('common.tokens'),
to: routes.toDelegateTokens({ accountId, orgIdentifier, projectIdentifier, module })
})
return (
<>
<Page.Header
breadcrumbs={
<NGBreadcrumbs
links={getLinkForAccountResources({ accountId, orgIdentifier, projectIdentifier, getString })}
/>
}
title={
<ScopedTitle
title={{
[Scope.PROJECT]: isDelTokensPage
? getString('delegates.tokens.delegateTokens')
: getString('delegate.delegates'),
[Scope.ORG]: isDelTokensPage
? getString('delegates.tokens.delegateTokensTitle')
: getString('delegates.delegatesTitle'),
[Scope.ACCOUNT]: isDelTokensPage
? getString('delegates.tokens.delegateTokensTitle')
: getString('delegates.delegatesTitle')
}}
/>
}
toolbar={<TabNavigation size={'small'} links={links} />}
/>
<Page.Body>{children}</Page.Body>
</>
)
}
export default DelegatesPage
|