All files / modules/10-common/components/Table/GitDetailsColumn GitDetailsColumn.tsx

100% Statements 14/14
90.91% Branches 10/11
100% Functions 2/2
100% Lines 13/13

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              26x     26x 26x 26x 26x   26x   26x 8x   8x                                                                     26x 4x 4x             26x  
/*
 * 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 from 'react'
import type { CellProps, Renderer } from 'react-table'
 
import { Icon, Layout, Text } from '@wings-software/uicore'
import { Color } from '@harness/design-system'
import { getRepoDetailsByIndentifier } from '@common/utils/gitSyncUtils'
import { GitSyncStoreProvider, useGitSyncStore } from 'framework/GitRepoStore/GitSyncStoreContext'
import type { EntityGitDetails } from 'services/pipeline-ng'
import css from './GitDetailsColumn.module.scss'
 
const RenderGitDetails: React.FC<EntityGitDetails> = ({ repoIdentifier, branch }) => {
  const { gitSyncRepos, loadingRepos } = useGitSyncStore()
 
  return !!repoIdentifier && !!branch ? (
    <Layout.Horizontal style={{ alignItems: 'center' }} padding={{ right: 'medium' }} className={css.gitDetails}>
      <Text
        style={{ fontSize: '13px', wordWrap: 'break-word', maxWidth: '100px' }}
        color={Color.GREY_800}
        margin={{ right: 'small' }}
        lineClamp={1}
        title={repoIdentifier}
      >
        {(!loadingRepos && getRepoDetailsByIndentifier(repoIdentifier, gitSyncRepos)?.name) || ''}
      </Text>
      <Layout.Horizontal
        border={{ color: Color.GREY_200 }}
        spacing="xsmall"
        style={{ borderRadius: '5px', alignItems: 'center' }}
        padding={{ left: 'small', right: 'small', top: 'xsmall', bottom: 'xsmall' }}
        background={Color.GREY_100}
      >
        <Icon name="git-new-branch" size={11} color={Color.GREY_600} />
        <Text
          style={{ wordWrap: 'break-word', maxWidth: '100px' }}
          font={{ size: 'small' }}
          color={Color.GREY_800}
          title={branch}
          lineClamp={1}
        >
          {branch}
        </Text>
      </Layout.Horizontal>
    </Layout.Horizontal>
  ) : (
    <></>
  )
}
 
export const GitDetailsColumn: Renderer<CellProps<any>> = ({ row }) => {
  const { gitDetails } = row.original
  return (
    <GitSyncStoreProvider>
      <RenderGitDetails repoIdentifier={gitDetails.repoIdentifier} branch={gitDetails.branch} />
    </GitSyncStoreProvider>
  )
}
 
export default GitDetailsColumn