import { useCallback } from 'react'; import copy from 'copy-to-clipboard'; import { ContentTypes } from 'librechat-data-provider'; import type { TMessage } from 'librechat-data-provider'; export default function useCopyToClipboard({ text, content, }: Partial>) { const copyToClipboard = useCallback( (setIsCopied: React.Dispatch>) => { setIsCopied(true); let messageText = text ?? ''; if (content) { messageText = content.reduce((acc, curr, i) => { if (curr.type === ContentTypes.TEXT) { return acc + curr.text.value + (i === content.length - 1 ? '' : '\n'); } return acc; }, ''); } copy(messageText ?? '', { format: 'text/plain' }); setTimeout(() => { setIsCopied(false); }, 3000); }, [text, content], ); return copyToClipboard; }