From 8adc44802f9768b76787ed9138a73deedd6a1314 Mon Sep 17 00:00:00 2001 From: Ephraim Atta-Duncan <55143799+dephraiim@users.noreply.github.com> Date: Fri, 17 Nov 2023 05:12:47 +0000 Subject: [PATCH] feat: copy signing link from avatar stack (#658) --- .../app/(dashboard)/documents/data-table.tsx | 4 +- .../avatar/avatar-with-recipient.tsx | 46 +++++++++++++++++++ .../avatar/stack-avatars-with-tooltip.tsx | 23 ++-------- .../server-only/document/find-documents.ts | 17 ++----- 4 files changed, 57 insertions(+), 33 deletions(-) create mode 100644 apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx diff --git a/apps/web/src/app/(dashboard)/documents/data-table.tsx b/apps/web/src/app/(dashboard)/documents/data-table.tsx index 475bfa434..9d07b8278 100644 --- a/apps/web/src/app/(dashboard)/documents/data-table.tsx +++ b/apps/web/src/app/(dashboard)/documents/data-table.tsx @@ -6,8 +6,8 @@ import { Loader } from 'lucide-react'; import { useSession } from 'next-auth/react'; import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params'; -import { FindResultSet } from '@documenso/lib/types/find-result-set'; -import { Document, Recipient, User } from '@documenso/prisma/client'; +import type { FindResultSet } from '@documenso/lib/types/find-result-set'; +import type { Document, Recipient, User } from '@documenso/prisma/client'; import { DataTable } from '@documenso/ui/primitives/data-table'; import { DataTablePagination } from '@documenso/ui/primitives/data-table-pagination'; diff --git a/apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx b/apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx new file mode 100644 index 000000000..8429870b0 --- /dev/null +++ b/apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx @@ -0,0 +1,46 @@ +'use client'; + +import React from 'react'; + +import { useCopyToClipboard } from '@documenso/lib/client-only/hooks/use-copy-to-clipboard'; +import { getRecipientType } from '@documenso/lib/client-only/recipient-type'; +import { recipientAbbreviation } from '@documenso/lib/utils/recipient-formatter'; +import type { Recipient } from '@documenso/prisma/client'; +import { useToast } from '@documenso/ui/primitives/use-toast'; + +import { StackAvatar } from './stack-avatar'; + +export type AvatarWithRecipientProps = { + recipient: Recipient; +}; + +export function AvatarWithRecipient({ recipient }: AvatarWithRecipientProps) { + const [, copy] = useCopyToClipboard(); + const { toast } = useToast(); + + const onRecipientClick = () => { + void copy(`${process.env.NEXT_PUBLIC_WEBAPP_URL}/sign/${recipient.token}`).then(() => { + toast({ + title: 'Copied to clipboard', + description: 'The signing link has been copied to your clipboard.', + }); + }); + }; + + return ( +