'use client'; import { HTMLAttributes } from 'react'; import { Copy, Share, Twitter } from 'lucide-react'; import { generateTwitterIntent } from '@documenso/lib/universal/generate-twitter-intent'; import { trpc } from '@documenso/trpc/react'; import { Button } from '@documenso/ui/primitives/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@documenso/ui/primitives/dropdown-menu'; import { useToast } from '@documenso/ui/primitives/use-toast'; import { useCopyToClipboard } from '~/hooks/use-copy-to-clipboard'; export type ShareButtonProps = HTMLAttributes & { token: string; documentId: number; }; export const ShareButton = ({ token, documentId }: ShareButtonProps) => { const { toast } = useToast(); const [, copyToClipboard] = useCopyToClipboard(); const { mutateAsync: createOrGetShareLink, isLoading } = trpc.shareLink.createOrGetShareLink.useMutation(); const onCopyClick = async () => { const { slug } = await createOrGetShareLink({ token: token, documentId, }); await copyToClipboard(`${window.location.origin}/share/${slug}`).catch(() => null); toast({ title: 'Copied to clipboard', description: 'The sharing link has been copied to your clipboard.', }); }; const onTweetClick = async () => { const { slug } = await createOrGetShareLink({ token: token, documentId, }); window.open( generateTwitterIntent( 'I just signed a document with @documenso. Check it out!', `${window.location.origin}/share/${slug}`, ), '_blank', ); }; return (
Copy Link
Tweet
); };