From 5dee4bcae98ad6fb8b116eb76b70154f45277a73 Mon Sep 17 00:00:00 2001 From: Shreerang Kale Date: Fri, 31 Jan 2025 10:41:53 +0530 Subject: [PATCH] Display custom domain in project card --- .../projects/ProjectCard/ProjectCard.tsx | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx index c7798279..0f29e572 100644 --- a/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx +++ b/packages/frontend/src/components/projects/ProjectCard/ProjectCard.tsx @@ -4,9 +4,15 @@ import { MenuItem, MenuList, } from '@snowballtools/material-tailwind-react-fork'; -import { ComponentPropsWithoutRef, MouseEvent, useCallback } from 'react'; +import { + ComponentPropsWithoutRef, + MouseEvent, + useCallback, + useEffect, + useState, +} from 'react'; import { useNavigate } from 'react-router-dom'; -import { Project } from 'gql-client'; +import { Domain, Project } from 'gql-client'; import { Avatar } from 'components/shared/Avatar'; import { Button } from 'components/shared/Button'; import { @@ -21,6 +27,7 @@ import { WavyBorder } from 'components/shared/WavyBorder'; import { relativeTimeMs } from 'utils/time'; import { getInitials } from 'utils/geInitials'; import { ProjectCardTheme, projectCardTheme } from './ProjectCard.theme'; +import { useGQLClient } from 'context/GQLClientContext'; export interface ProjectCardProps extends ComponentPropsWithoutRef<'div'>, @@ -42,6 +49,9 @@ export const ProjectCard = ({ const hasError = status === 'failure'; const navigate = useNavigate(); + const client = useGQLClient(); + + const [customDomain, setCustomDomain] = useState(null); const handleOptionsClick = ( e: MouseEvent, @@ -63,6 +73,16 @@ export const ProjectCard = ({ [project.id, navigate], ); + useEffect(() => { + const fetchCustomDomain = async () => { + const { oldestDomain } = await client.oldestDomain(project.id); + + setCustomDomain(oldestDomain); + }; + + fetchCustomDomain(); + }, [project]); + return (
{project.name}

- {project.deployments[0]?.domain?.name ?? 'No domain'} + {customDomain && customDomain.name ? customDomain.name : 'No domain'}

{/* Icons */}