import { useEffect, useState } from 'react'; import { msg } from '@lingui/core/macro'; import { useLingui } from '@lingui/react'; import { Trans } from '@lingui/react/macro'; import { DocumentStatus, RecipientRole, SigningStatus } from '@prisma/client'; import { TooltipArrow } from '@radix-ui/react-tooltip'; import { AlertTriangle, CheckIcon, Clock, MailIcon, MailOpenIcon, PenIcon, PlusIcon, UserIcon, } from 'lucide-react'; import { Link, useSearchParams } from 'react-router'; import { match } from 'ts-pattern'; import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles'; import type { TEnvelope } from '@documenso/lib/types/envelope'; import { isDocumentCompleted } from '@documenso/lib/utils/document'; import { formatSigningLink } from '@documenso/lib/utils/recipients'; import { CopyTextButton } from '@documenso/ui/components/common/copy-text-button'; import { SignatureIcon } from '@documenso/ui/icons/signature'; import { AvatarWithText } from '@documenso/ui/primitives/avatar'; import { Badge } from '@documenso/ui/primitives/badge'; import { PopoverHover } from '@documenso/ui/primitives/popover'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@documenso/ui/primitives/tooltip'; import { useToast } from '@documenso/ui/primitives/use-toast'; export type DocumentPageViewRecipientsProps = { envelope: TEnvelope; documentRootPath: string; }; export const DocumentPageViewRecipients = ({ envelope, documentRootPath, }: DocumentPageViewRecipientsProps) => { const { _ } = useLingui(); const { toast } = useToast(); const [searchParams, setSearchParams] = useSearchParams(); const recipients = envelope.recipients; const [shouldHighlightCopyButtons, setShouldHighlightCopyButtons] = useState(false); // Check for action=view-tokens query parameter and set highlighting state useEffect(() => { const hasViewTokensAction = searchParams.get('action') === 'copy-links'; if (hasViewTokensAction) { setShouldHighlightCopyButtons(true); // Remove the query parameter immediately const params = new URLSearchParams(searchParams); params.delete('action'); setSearchParams(params); } }, [searchParams, setSearchParams]); return (

Recipients

{!isDocumentCompleted(envelope.status) && ( {recipients.length === 0 ? ( ) : ( )} )}
); };