Display custom domain in project card

This commit is contained in:
Shreerang Kale 2025-01-31 10:41:53 +05:30
parent 05d4b8526d
commit 5dee4bcae9

View File

@ -4,9 +4,15 @@ import {
MenuItem, MenuItem,
MenuList, MenuList,
} from '@snowballtools/material-tailwind-react-fork'; } 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 { useNavigate } from 'react-router-dom';
import { Project } from 'gql-client'; import { Domain, Project } from 'gql-client';
import { Avatar } from 'components/shared/Avatar'; import { Avatar } from 'components/shared/Avatar';
import { Button } from 'components/shared/Button'; import { Button } from 'components/shared/Button';
import { import {
@ -21,6 +27,7 @@ import { WavyBorder } from 'components/shared/WavyBorder';
import { relativeTimeMs } from 'utils/time'; import { relativeTimeMs } from 'utils/time';
import { getInitials } from 'utils/geInitials'; import { getInitials } from 'utils/geInitials';
import { ProjectCardTheme, projectCardTheme } from './ProjectCard.theme'; import { ProjectCardTheme, projectCardTheme } from './ProjectCard.theme';
import { useGQLClient } from 'context/GQLClientContext';
export interface ProjectCardProps export interface ProjectCardProps
extends ComponentPropsWithoutRef<'div'>, extends ComponentPropsWithoutRef<'div'>,
@ -42,6 +49,9 @@ export const ProjectCard = ({
const hasError = status === 'failure'; const hasError = status === 'failure';
const navigate = useNavigate(); const navigate = useNavigate();
const client = useGQLClient();
const [customDomain, setCustomDomain] = useState<Domain | null>(null);
const handleOptionsClick = ( const handleOptionsClick = (
e: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>, e: MouseEvent<HTMLButtonElement, globalThis.MouseEvent>,
@ -63,6 +73,16 @@ export const ProjectCard = ({
[project.id, navigate], [project.id, navigate],
); );
useEffect(() => {
const fetchCustomDomain = async () => {
const { oldestDomain } = await client.oldestDomain(project.id);
setCustomDomain(oldestDomain);
};
fetchCustomDomain();
}, [project]);
return ( return (
<div <div
{...props} {...props}
@ -83,7 +103,7 @@ export const ProjectCard = ({
<p className={theme.title()}>{project.name}</p> <p className={theme.title()}>{project.name}</p>
</Tooltip> </Tooltip>
<p className={theme.description()}> <p className={theme.description()}>
{project.deployments[0]?.domain?.name ?? 'No domain'} {customDomain && customDomain.name ? customDomain.name : 'No domain'}
</p> </p>
</div> </div>
{/* Icons */} {/* Icons */}