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 | 4x 4x 4x 4x 4x 8x 8x 8x 25x | /*
* 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, { createContext, ReactElement, ReactNode, useContext, useMemo } from 'react'
import { useGetAllTargetAttributes } from 'services/cf'
import { sortStrings } from '@cf/utils/sortStrings'
export interface UseTargetAttributesHookAPI {
loading: boolean
targetAttributes: string[]
}
export interface TargetAttributesProviderProps {
projectIdentifier: string
orgIdentifier: string
accountIdentifier: string
environmentIdentifier: string
children?: ReactNode | ReactNode[]
}
const TargetAttributesContext = createContext<UseTargetAttributesHookAPI>({ loading: false, targetAttributes: [] })
export const TargetAttributesProvider = ({
projectIdentifier,
orgIdentifier,
accountIdentifier,
environmentIdentifier,
children
}: TargetAttributesProviderProps): ReactElement => {
const { loading, data } = useGetAllTargetAttributes({
queryParams: { projectIdentifier, orgIdentifier, accountIdentifier, environmentIdentifier }
})
const targetAttributes = useMemo<string[]>(() => sortStrings(data || []), [data])
return (
<TargetAttributesContext.Provider value={{ loading, targetAttributes }}>
{children}
</TargetAttributesContext.Provider>
)
}
export const useTargetAttributes = (): UseTargetAttributesHookAPI => useContext(TargetAttributesContext)
|