import React, { useCallback, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { Spinner } from '@snowballtools/material-tailwind-react-fork'; import { relativeTimeISO } from 'utils/time'; import { GitRepositoryDetails } from '../../../../types/types'; import { useGQLClient } from 'context/GQLClientContext'; import { ArrowRightCircleIcon, GithubIcon, LockIcon, } from 'components/shared/CustomIcon'; import { Button } from 'components/shared/Button'; import { useToast } from 'components/shared/Toast'; interface ProjectRepoCardProps { repository: GitRepositoryDetails; } export const ProjectRepoCard: React.FC = ({ repository, }) => { const client = useGQLClient(); const navigate = useNavigate(); const [isLoading, setIsLoading] = useState(false); const { orgSlug } = useParams(); const { toast, dismiss } = useToast(); const createProject = useCallback(async () => { if (!repository || !orgSlug) { return toast({ id: 'missing-repository-or-org-slug', title: 'Repository or organization slug is missing', variant: 'error', onDismiss: dismiss, }); } navigate( `configure?owner=${repository.owner?.login}&name=${repository.name}&defaultBranch=${repository.default_branch}&fullName=${repository.full_name}&orgSlug=${orgSlug}`, ); }, [client, repository, orgSlug, setIsLoading, navigate, toast]); return (
{/* Icon container */}
{/* Content */}

{repository.full_name}

{repository.updated_at && relativeTimeISO(repository.updated_at)}

{repository.visibility === 'private' && (
Private
)}
{/* Right action */} {isLoading ? ( ) : ( )}
); };