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

100% Statements 12/12
90% Branches 18/20
100% Functions 2/2
100% Lines 10/10

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              63x   63x       1106x   1106x 81x 81x   5x   4x     1106x           63x  
/*
 * 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 { useQueryParams } from '@common/hooks'
 
const useActiveEnvironment = (): {
  activeEnvironment: string
  withActiveEnvironment: (url: string, envOverride?: string) => string
} => {
  const activeEnvironment = useQueryParams<Record<string, string>>()?.activeEnvironment || ''
 
  const withActiveEnvironment = (url: string, envOverride?: string): string => {
    const env = envOverride ?? activeEnvironment
    if (!env || url.includes(`activeEnvironment=${env}`)) return url
 
    if (url.includes('activeEnvironment')) return url.replace(/activeEnvironment=[^&]+/gi, `activeEnvironment=${env}`)
 
    return `${url}${url.includes('?') ? '&' : '?'}activeEnvironment=${env}`
  }
 
  return {
    activeEnvironment: activeEnvironment !== 'undefined' ? activeEnvironment : '',
    withActiveEnvironment
  }
}
 
export default useActiveEnvironment