diff --git a/web/hooks/use-copy-to-clipboard.ts b/web/hooks/use-copy-to-clipboard.ts index 76f792c6b4..ca6298dcc1 100644 --- a/web/hooks/use-copy-to-clipboard.ts +++ b/web/hooks/use-copy-to-clipboard.ts @@ -1,29 +1,31 @@ -import { useState } from 'react' +import { useCallback, useState } from 'react' +import writeText from 'copy-to-clipboard' type CopiedValue = string | null type CopyFn = (text: string) => Promise function useCopyToClipboard(): [CopiedValue, CopyFn] { - const [copiedText, setCopiedText] = useState(null) + const [copiedText, setCopiedText] = useState(null) - const copy: CopyFn = async text => { - if (!navigator?.clipboard) { - console.warn('Clipboard not supported') - return false - } - - try { - await navigator.clipboard.writeText(text) - setCopiedText(text) - return true - } catch (error) { - console.warn('Copy failed', error) - setCopiedText(null) - return false - } + const copy: CopyFn = useCallback(async (text: string) => { + if (!navigator?.clipboard) { + console.warn('Clipboard not supported') + return false } - return [copiedText, copy] + try { + writeText(text) + setCopiedText(text) + return true + } + catch (error) { + console.warn('Copy failed', error) + setCopiedText(null) + return false + } + }, []) + + return [copiedText, copy] } -export default useCopyToClipboard \ No newline at end of file +export default useCopyToClipboard