All files / modules/75-cf/hooks useSyncedEnvironment.ts

50% Statements 6/12
0% Branches 0/6
0% Functions 0/2
45.45% Lines 5/11

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              2x 2x 2x 2x                 2x                                                              
/*
 * 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 { useEffect } from 'react'
import { useGetEnvironment } from 'services/cd-ng'
import { useLocalStorage } from '@common/hooks'
import { CF_LOCAL_STORAGE_ENV_KEY, DEFAULT_ENV } from '@cf/utils/CFUtils'
 
export interface UseSyncedEnvironmentProps {
  accountId: string
  orgIdentifier: string
  projectIdentifier: string
  environmentIdentifier: string
}
 
export const useSyncedEnvironment = ({
  accountId,
  orgIdentifier,
  projectIdentifier,
  environmentIdentifier
}: UseSyncedEnvironmentProps) => {
  const [environment, setEnvironment] = useLocalStorage(CF_LOCAL_STORAGE_ENV_KEY, DEFAULT_ENV)
  const { loading, data, error, refetch } = useGetEnvironment({
    environmentIdentifier,
    queryParams: {
      accountId,
      projectIdentifier,
      orgIdentifier
    }
  })
 
  useEffect(() => {
    if (data?.data) {
      setEnvironment({ label: data.data.name as string, value: data.data.identifier as string })
    }
  }, [data])
 
  return {
    environment,
    setEnvironment,
    data,
    loading,
    error,
    refetch
  }
}