All files / modules/30-secrets/modals/CreateSSHCredModal useVerifyModal.tsx

100% Statements 20/20
75% Branches 3/4
100% Functions 4/4
100% Lines 19/19

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              9x 9x 9x 9x 9x 9x   9x 9x 9x             9x 26x 26x   26x   1x                     26x   1x 1x         26x 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, { useCallback, useState } from 'react'
import { Button, Text } from '@wings-software/uicore'
import { Color } from '@harness/design-system'
import { useModalHook } from '@harness/use-modal'
import { Dialog, Classes } from '@blueprintjs/core'
import cx from 'classnames'
import type { SecretDTOV2 } from 'services/cd-ng'
import { useStrings } from 'framework/strings'
import VerifyConnection from './views/VerifyConnection'
import css from './useCreateSSHCredModal.module.scss'
 
export interface UseVerifyModalReturn {
  openVerifyModal: (project?: SecretDTOV2) => void
  closeVerifyModal: () => void
}
 
export const useVerifyModal = (): UseVerifyModalReturn => {
  const [data, setData] = useState<SecretDTOV2>()
  const { getString } = useStrings()
 
  const [showModal, hideModal] = useModalHook(
    () => (
      <Dialog enforceFocus={false} isOpen={true} onClose={hideModal} className={cx(Classes.DIALOG, css.verifyDialog)}>
        <Text margin={{ bottom: 'xlarge' }} font={{ size: 'medium' }} color={Color.BLACK}>
          {getString('secrets.createSSHCredWizard.btnVerifyConnection')}
        </Text>
        <VerifyConnection identifier={data?.identifier as string} closeModal={hideModal} />
        <Button minimal icon="cross" iconProps={{ size: 18 }} onClick={hideModal} className={css.crossIcon} />
      </Dialog>
    ),
    [data]
  )
 
  const open = useCallback(
    (_data?: SecretDTOV2) => {
      setData(_data)
      showModal()
    },
    [showModal]
  )
 
  return {
    openVerifyModal: (sshData?: SecretDTOV2) => open(sshData),
    closeVerifyModal: hideModal
  }
}