import React, { useEffect, useState } from 'react' import { Link, useHistory } from 'react-router-dom' import { Button, ButtonVariation, Container, FlexExpander, FontVariation, Layout, PageBody, StringSubstitute, Text } from '@harness/uicore' import { Falsy, Match, Truthy } from 'react-jsx-match' import { useGetResourceContent } from 'hooks/useGetResourceContent' import { voidFn, getErrorMessage, permissionProps } from 'utils/Utils' import { useAppContext } from 'AppContext' import { useGetRepositoryMetadata } from 'hooks/useGetRepositoryMetadata' import { LoadingSpinner } from 'components/LoadingSpinner/LoadingSpinner' import { useStrings } from 'framework/strings' import type { OpenapiGetContentOutput, TypesRepository } from 'services/code' import { MarkdownViewer } from 'components/MarkdownViewer/MarkdownViewer' import { CodeIcon, GitInfoProps } from 'utils/GitUtils' import { useDisableCodeMainLinks } from 'hooks/useDisableCodeMainLinks' import { useGetSpaceParam } from 'hooks/useGetSpaceParam' import { Images } from 'images' import { RepositoryContent } from './RepositoryContent/RepositoryContent' import { RepositoryHeader } from './RepositoryHeader/RepositoryHeader' import { ContentHeader } from './RepositoryContent/ContentHeader/ContentHeader' import css from './Repository.module.scss' import { CopyButton } from 'components/CopyButton/CopyButton' import CloneCredentialDialog from 'components/CloneCredentialDialog/CloneCredentialDialog' export default function Repository() { const { gitRef, resourcePath, repoMetadata, error, loading, refetch } = useGetRepositoryMetadata() const { data: resourceContent, error: resourceError, loading: resourceLoading, isRepositoryEmpty } = useGetResourceContent({ repoMetadata, gitRef, resourcePath, includeCommit: true }) const [fileNotExist, setFileNotExist] = useState(false) const { getString } = useStrings() useEffect(() => { if (resourceError?.status === 404) { setFileNotExist(true) } else { setFileNotExist(false) } }, [resourceError]) return ( fileNotExist === true, message: getString('error404Text'), image: Images.error404 }}> {!!repoMetadata && ( <> {!!resourceContent && ( )} {isRepositoryEmpty && ( )} )} ) } const EmptyRepositoryInfo: React.FC> = ( { repoMetadata }, resourceContent ) => { const history = useHistory() const { routes } = useAppContext() const { getString } = useStrings() const { currentUserProfileURL } = useAppContext() const newFileURL = routes.toCODEFileEdit({ repoPath: repoMetadata.path as string, gitRef: repoMetadata.default_branch as string, resourcePath: '' }) const { standalone } = useAppContext() const { hooks } = useAppContext() const space = useGetSpaceParam() const [flag, setFlag] = useState(false) const permPushResult = hooks?.usePermissionTranslate?.( { resource: { resourceType: 'CODE_REPO' }, permissions: ['code_repo_push'] }, [space] ) useDisableCodeMainLinks(true) return ( {getString('emptyRepoHeader')} README, LICENSE: LICENSE, GITIGNORE: .gitignore }} /> {getString('firstTimeTitle')} {getString('cloneHTTPS')} {repoMetadata.git_url} { history.push(currentUserProfileURL) }}> here ) }} /> ) }